【问题标题】:What could be the reason for such kind of Azure Web Site hangs?这种 Azure 网站挂起的原因可能是什么?
【发布时间】:2015-07-31 11:41:17
【问题描述】:

我在 Azure 上进行了相当高负载的部署:4 个大型实例每秒处理大约 300-600 个请求。正常情况下:“平均响应时间”为 70 到 150 毫秒,但有时可能会增长到 200 到 300 毫秒,但绝对可以。

虽然,每天一到两次(不是在“高峰时间”)我在网站监控选项卡上看到这样的图片:

因此,每分钟的请求数显着下降,平均响应时间增加到 3 分钟,一段时间后,一切都恢复正常。

在这次“停电”期间,只有 0.1% 的请求被丢弃(Http Server Errors with timeout),其他请求只是在队列中等待,通常会在几分钟后处理。不过,并非所有客户都准备好等待:-(

内存使用率一直低于 30%,CPU 使用率只有 40-50%。

我已经检查了什么?:

  1. 跟踪超时请求:它们确实在随机位置超时。
  2. Azure 存储和使用的其他组件的限制:根本没有限制。
  3. 我还尝试通过 CloudFlare 路由所有流量:并看到了同样的问题。

出现这些问题的原因可能是什么?接下来我可以检查什么?
提前谢谢大家!

更新 1:BenV 提出了很好的尝试,但不幸的是它什么也没显示 :-(
我配置了每 500k 请求回收一次进程,还添加了工作节点,因此 CPU 利用率现在全天不到 40%,但仍然会出现中断。

更新 2:项目使用 ASP.Net MVC 4。

【问题讨论】:

  • 我在一个非常小的应用程序中遇到了类似的问题。我尝试了很多东西,解决方案是在开始时清除处理程序并手动添加它们。也许它也对你有帮助。

标签: c# asp.net-mvc-4 azure azure-web-app-service


【解决方案1】:

我遇到了同样的问题。对我来说,我在日志中看到了很多 WinCache 错误。

只要站点失败,日志中就会出现很多 WinCache 错误。 WinCache 是 IIS 处理 PHP 以尝试加速处理的方式。它是 Microsoft 构建的附加组件,默认情况下在 IIS 和所有 Azure 站点中启用。 WinCache 将被挂起,而不是回收和继续,它会消耗实例上的所有内存和文件句柄,基本上将其锁定。

我在 Azure 门户中添加了新的应用设置来扫描文件夹中的 php.ini 设置更改。
d:\home\site\ini

d:\home\site\ini\settings.ini 中添加了一个文件 包含以下内容

wincache.fcenabled=1
session.save_handler = files
memory_limit = 256M
wincache.chkinterval=5
wincache.ucachesize=200
wincache.scachesize=64
wincache.enablecli=1
wincache.ocenabled=0 


这做了几件事:
wincache.fcenabled=1

使用 WinCache 启用文件缓存(我认为这是默认设置)

session.save_handler = files

将会话处理程序从 WinCache(Azure 默认)更改为基于标准文件以减少缓存引擎压力

memory_limit = 256M
wincache.chkinterval=5
wincache.ucachesize=200
wincache.scachesize=64
wincache.enablecli=1

将 WinCache 大小设置为每个线程 256 兆字节并限制整体缓存大小。这会迫使 WinCache 清除旧数据并更频繁地回收缓存。

wincache.ocenabled=0 

这是一个大的。禁用 WinCache 操作代码缓存。那就是 WinCache 将实际的 PHP 脚本缓存到内存中。文件仍然从第一行开始缓存,但 PHP 被正常解释,而不是缓存到大型二进制文件中。

我的 Azure 网站从大约每 3 天崩溃一次,日志看起来像你的日志,到现在连续 120 天没有任何问题。

祝你好运!

【讨论】:

  • 感谢您提供如此详细的答案,我希望它会对遇到此类问题的人有所帮助。但我完全忘记提及我使用的平台......我使用 ASP.Net MVC 和 C#。更新了我的问题。
【解决方案2】:

preview portal 中有一些不错的可用于 Web 应用程序的工具。

Application Insights 扩展特别适用于monitoring and troubleshooting app performance

【讨论】:

  • 谢谢,BenV,但 Application Insights 限制每 5 分钟收集 30 000 个指标,这会导致数据收集停止到午夜(据我所知),因此在这种负载下这是无法使用的工具(我有 >每分钟 30 000 个请求):-(
猜你喜欢
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-02
  • 1970-01-01
  • 2013-02-16
相关资源
最近更新 更多