Ale*_*sov 20 c# azure asp.net-mvc-4 azure-web-sites
我在Azure上有一个相当高负载的部署:4个大型实例,每秒服务大约300-600个请求.在正常情况下:"平均响应时间"为70到150毫秒,但有时它可能长到200-300毫秒,但它绝对没问题.
虽然,每天一到两次(不是在"高峰时间"),我在网站监控标签上看到了这样的图片:
因此,每分钟的请求数量显着下降,平均响应时间增加到3分钟,一段时间后 - 一切都恢复正常.
在此"停电"期间,只有0.1%的请求被删除(带有超时的Http服务器错误),其他请求只是在队列中等待,并且通常在几分钟后处理.虽然,并非所有客户都准备等待:-(
内存使用率始终低于30%,CPU使用率仅高达40-50%.
我已经检查了什么?:
这些问题可能是什么原因?我接下来可以检查什么?
谢谢大家!
更新1:BenV提出了尝试的好处,但不幸的是它没有显示任何内容:-(
我配置了每500k请求回收的进程并且还添加了工作节点,因此现在CPU利用率现在不到40%,但仍然会出现停电.
更新2:项目使用ASP.Net MVC 4.
我有同样的问题.对我来说,我在日志中看到了很多WinCache错误.
每当站点失败时,日志中会出现很多WinCache错误.WinCache是IIS处理PHP以尝试加速处理的方式.它是Microsoft构建的附加组件,默认情况下在IIS和所有Azure站点中启用.WinCache会被挂起,而不是回收和继续,它将消耗一个实例上的所有内存和文件句柄,基本上将其锁定.
我在Azure门户中添加了新的应用程序设置,以扫描文件夹中的php.ini设置更改.
d:\家\网站\ 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
Run Code Online (Sandbox Code Playgroud)
wincache.fcenabled=1
Run Code Online (Sandbox Code Playgroud)
使用WinCache启用文件缓存(我认为这是默认值)
session.save_handler = files
Run Code Online (Sandbox Code Playgroud)
将会话处理程序从WinCache(Azure默认)更改为基于标准文件,以减少缓存引擎压力
memory_limit = 256M
wincache.chkinterval=5
wincache.ucachesize=200
wincache.scachesize=64
wincache.enablecli=1
Run Code Online (Sandbox Code Playgroud)
将WinCache大小设置为每个线程256 MB,并限制整体缓存大小.这会强制WinCache清除旧数据并更频繁地回收缓存.
wincache.ocenabled=0
Run Code Online (Sandbox Code Playgroud)
这是一个很大的问题.禁用WinCache操作代码缓存.这就是WinCache将实际的PHP脚本缓存到内存中.文件仍然从第一行缓存,但PHP按正常方式解释,而不是缓存到大型二进制文件中.
我从一个我的Azure网站崩溃大约每3天一次,看起来像你的日志到目前为止连续120天没有任何问题.
祝好运!
归档时间: |
|
查看次数: |
444 次 |
最近记录: |