为什么 Angular 应用程序 http 请求在向不同 ASP.NET 核心端点发出大约 20 个请求后挂起?

Why Angular app http requests hang after about 20 requests to different ASP.NET Core endpoints are made?

这是什么

  1. Angular 通过服务器上的 nginx 或 android
  2. 上的 cordova 提供的前端应用程序
  3. ASP.NET 核心后端,通过 Pomelo 连接器连接到 MySQL 数据库。生产后端应用程序通过 nginx 反向代理提供服务。

问题

从 Angular 应用程序发送到 api 的请求需要很长时间(一分钟或更长时间)或在大约 20-50 个生产请求后完全超时(在我使用 IIS 服务器的本地开发环境中)这可能一天发生几次,有时几天都不会发生)。

也许这可以给某人一些线索。我认为问题出在 EF 查询上,因为我检索了一个实体及其子实体(图片、评论、喜欢、其他与业务相关的实体)。 但是当我关闭 angular 应用程序并再次打开时 - 再次请求可以正常处理接下来的 20-50 个。

我还假设这可能是因为 DbContext 问题,一位开发人员告诉我这个问题。

发生的地方

开发环境和生产环境。但是,在生产中它发生得更快。生产服务器有 1GB RAM 并且相对较慢 CPU ($5 Digital Ocean droplet)。

我试过的

  1. 根据描述的最佳实践重写了 EF 查询here

过滤 back-end 我意识到瓶颈可能在 Angular 应用程序中的 RxJs 扩展中。我检查了它们,结果发现每次导航到新路线时都会创建通知轮询可观察对象。在 20-50 个导航事件之后,有 20-50 个轮询请求会阻止所有内容。轮询机制 re-write 解决了问题。