通过 AutoHeal 方式重启网站
Azure Web 应用服务的框架中,文件存储服务器和运行工作服务器是分离的。即用户的代码的存储位置是在一台专门的 FTP 服务器上,通过类似于共享文件夹的功能一样链接到所运行的服务器上。当后台正在发生 storage failed 平台维护的时候,会导致 Azure Web 应用程序文件服务器路径发生变化,造成网站的重启,有时候您网站进程可能会不能适应,持续发生 502 错误。用户可以通过 AutoHeal 方式自动重启网站。
AutoHeal 会根据所选设置(例如配置更改、请求、基于内存的限制或执行请求所需的时间)回收应用的工作进程。在大多数情况下,回收进程是在出现问题后进行恢复的最快方式。尽管始终可以从 Azure 门户直接重新启动 Web 应用,但 AutoHeal 可以自动执行此操作。只需在 Web 应用的根 web.autoheal.config 中添加 monitoring 一些触发器即可,并将该文件上传到 wwwroot 目录下。请注意,即使应用程序并非 .Net 应用程序,这些设置的工作方式也仍然相同。
具体所选配置如下:
- 通过请求数进行回收
- 基于内存限制的自定义操作(或回收/日志记录)
- 基于 HTTP 状态代码记录事件(或回收)
- 通过请求时间长回收网站
<system.webServer>
<monitoring>
<triggers>
<request count="5" timeInterval="00:00:30">// 配置在 30s 访问 5 次
<memory privateBytesInKB="1000000"/>// 进程内存大于 1GB
<statusCode>
<add statusCode="500" subStatusCode="100" win32StatusCode="0" count="10" timeInterval="00:00:30">// 10 个请求导致 http 状态代码为 500, 最后30秒的子状态代码为 100
</statusCode>
<slowRequests timeTaken="00:00:05" count="1" timeInterval="00:00:30">// 在 30s 内消耗超过 5s 的请求数为 1
</triggers>
<actions value="Recycle"/>
</monitoring>
</system.webServer>