为什么 Angular 应用程序 http 请求在向不同 ASP.NET 核心端点发出大约 20 个请求后挂起?
Why Angular app http requests hang after about 20 requests to different ASP.NET Core endpoints are made?
这是什么
- Angular 通过服务器上的 nginx 或 android
上的 cordova 提供的前端应用程序
- ASP.NET 核心后端,通过 Pomelo 连接器连接到 MySQL 数据库。生产后端应用程序通过 nginx 反向代理提供服务。
问题
从 Angular 应用程序发送到 api 的请求需要很长时间(一分钟或更长时间)或在大约 20-50 个生产请求后完全超时(在我使用 IIS 服务器的本地开发环境中)这可能一天发生几次,有时几天都不会发生)。
也许这可以给某人一些线索。我认为问题出在 EF 查询上,因为我检索了一个实体及其子实体(图片、评论、喜欢、其他与业务相关的实体)。 但是当我关闭 angular 应用程序并再次打开时 - 再次请求可以正常处理接下来的 20-50 个。
我还假设这可能是因为 DbContext 问题,一位开发人员告诉我这个问题。
发生的地方
开发环境和生产环境。但是,在生产中它发生得更快。生产服务器有 1GB RAM 并且相对较慢 CPU ($5 Digital Ocean droplet)。
我试过的
- 根据描述的最佳实践重写了 EF 查询here
过滤 back-end 我意识到瓶颈可能在 Angular 应用程序中的 RxJs 扩展中。我检查了它们,结果发现每次导航到新路线时都会创建通知轮询可观察对象。在 20-50 个导航事件之后,有 20-50 个轮询请求会阻止所有内容。轮询机制 re-write 解决了问题。
这是什么
- Angular 通过服务器上的 nginx 或 android 上的 cordova 提供的前端应用程序
- ASP.NET 核心后端,通过 Pomelo 连接器连接到 MySQL 数据库。生产后端应用程序通过 nginx 反向代理提供服务。
问题
从 Angular 应用程序发送到 api 的请求需要很长时间(一分钟或更长时间)或在大约 20-50 个生产请求后完全超时(在我使用 IIS 服务器的本地开发环境中)这可能一天发生几次,有时几天都不会发生)。
也许这可以给某人一些线索。我认为问题出在 EF 查询上,因为我检索了一个实体及其子实体(图片、评论、喜欢、其他与业务相关的实体)。 但是当我关闭 angular 应用程序并再次打开时 - 再次请求可以正常处理接下来的 20-50 个。
我还假设这可能是因为 DbContext 问题,一位开发人员告诉我这个问题。
发生的地方
开发环境和生产环境。但是,在生产中它发生得更快。生产服务器有 1GB RAM 并且相对较慢 CPU ($5 Digital Ocean droplet)。
我试过的
- 根据描述的最佳实践重写了 EF 查询here
过滤 back-end 我意识到瓶颈可能在 Angular 应用程序中的 RxJs 扩展中。我检查了它们,结果发现每次导航到新路线时都会创建通知轮询可观察对象。在 20-50 个导航事件之后,有 20-50 个轮询请求会阻止所有内容。轮询机制 re-write 解决了问题。