gpt4 book ai didi

c# - 此类 Azure 网站挂起的原因可能是什么?

转载 作者:IT王子 更新时间:2023-10-29 04:39:28 24 4
gpt4 key购买 nike

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

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

Azure Web Site Monitoring

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

在此“停电”期间,只有 0.1% 的请求被丢弃(HTTP 服务器超时错误),其他请求只是在队列中等待,通常会在几分钟后得到处理。不过,并非所有客户都准备好等待:-(

内存使用率始终低于30%,CPU使用率最高为40-50%。

我已经检查过什么?:

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

造成此类问题的原因可能是什么?接下来我可以检查什么?
提前谢谢大家!

更新 1:BenV 提出了值得尝试的好东西,但不幸的是它没有显示任何内容:-(
我配置了进程每 500k 请求回收一次,并添加了工作节点,因此现在 CPU 利用率全天低于 40%,但仍然出现停电情况。

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

最佳答案

我也遇到了同样的问题。对我来说,我在日志中看到了很多 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

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

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

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

wincache.ocenabled=0 

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

我的 Azure 网站从大约每 3 天崩溃一次(日志与您的日志类似)到迄今为止连续 120 天没有出现任何问题。

祝你好运!

关于c# - 此类 Azure 网站挂起的原因可能是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31745322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com