这是我现在第二次看到这种行为,我不知道如何解决这个问题。
我有一个基于 .Net Core 的网络系统。目前是 2.0(我知道,我需要更新这个)。
- 单一应用服务
- 两个基于 .Net Core 的 Web 应用程序:
- 主要是 Web API REST 端点
- 一个也有一些非常简单的 MVC 前端东西(一个后端管理门户,它使用 JS/JQuery 来查询一些 REST 端点以提供一些统计信息和诊断信息)
- 一个 Web 应用程序有两个队列触发的 Web 作业
- 两者都通过 EF Core 访问同一个 Azure SQL 数据库。
- 两者都使用 NLog 进行日志记录
- 第三个 Web 应用程序仅用于处理主 UI 的 Angular 前端,并且从不给出任何实际问题(调用 Web API 端点之一并显示结果数据.. 没有太多逻辑)
这些应用程序形成了一个多租户报告系统。一个应用程序用于获取数据以进行报告。另一个是远程客户端系统用来上传和导入数据的端点,然后在前端可见。
一切都构建在构建服务器(团队城市)上,构建工件也通过同一团队城市服务器上的单独构建配置部署到 azure。
这通常已经运行了一段时间(一年多)。但是大约几个月前,其中一个 Web 应用程序(报告应用程序)开始不响应请求。并非所有请求(例如,仅生成 JWT 令牌的“登录”之类的基本内容都可以),但任何试图获取大量数据的内容都不会响应。
重新启动网络应用程序没有帮助。打开额外的日志并没有帮助,但似乎可以确定它正在到达特定的代码行并且只是......停止。这非常奇怪,而且不是一条特别费力的线路。
最后,我添加了更多日志记录,当然必须重新部署以进行这些更改……然后问题就完全消失了。除了一些日志记录语句之外,我真的没有添加任何额外的东西(我对此非常细致,并且通过 Team City/VCS Labeling (Git) 提供了构建/部署历史记录)。
现在,今天我在另一个.Net Core Web 应用程序上遇到了类似的症状。它似乎只是到达代码中的特定位置然后停止。(据我从日志中可以看出)。在尝试重新启动应用程序(以及覆盖这两个应用程序的整个应用程序服务)并且它没有任何效果之后,我只是再次重新部署了该站点,没有任何更改,它开始工作。
什么可能导致这种行为?似乎有时 .Net Core Web 应用程序只是进入某种奇怪的状态并停止正确响应。他们不会抛出异常,只是... stop。并且重新启动 Web 应用程序似乎没有帮助,这尤其奇怪。就好像它在重新启动之间保持的状态比您预期的要多。
我将尝试尽快优先升级到 .Net Core 2.2 或类似版本,但想知道是否有人看到了这一点,当然,如果更新后再次发生这种情况,我会不高兴。