在IIS 7.5中,PHP吓坏了(连接丢失,连接被丢弃)

我在IIS和
PHP(加上一个com dll)方面遇到了一些问题. COM dll经常崩溃,但我认为问题不是由于那个(我已禁用快速失败保护),因为dll总是崩溃,而问题是在三周前我们达到大约15.000个用户/天时开始的.

会发生什么是突然所有.php文件停止响应,服务器只能提供静态.htm文件,这表明php(php-cgi.exe)存在问题.

这几乎总是发生在高峰时段(3-4-5PM),当谷歌分析显示180-220“在线用户”.当这种情况发生时(我的意思是骗了我的意思)我可以在服务器的任务管理器中看到,通常10-12个php-cgi.exe进程,它们最多可以处理30或40个php-cgi.exe进程(~30 MB RAM每个),我想这是因为php-cgi.exe停止处理请求.该服务器总共有8GB RAM.

错误日志包括connection_abandoned_by_regqueue和connection_dropped,如果我不手动重启IIS或defaultapppool,错误将在大多数情况下转为defaultapppool不可用503

一个问题是,在事件查看器中,我从来没有从WAS收到defaultapppool被禁用的消息,因此我可以将任务(重新启动池)附加到它,并且在IIS管理控制台中,我从未将defaultapppool视为已禁用,尽管事实上它在日志中显示为禁用.

我一直在玩超时,但似乎从未得到过正确的结果.

我目前的理论是:

1)PHP对许多用户(Windows,IIS)感到不满,无法处理它

2)当许多用户在线时,.dll的崩溃会导致麻烦

3)php iis兼容性并不是很好的大量,虽然我不相信15k /天是太多的用户.我应该注意,大多数请求需要50-300毫秒才能完成.

php版本是通过WebPI安装的5.3.19,windows版本是windows 2008 R2 64bit.

出于一些奇怪的原因,记事本显示放弃/禁用查询的查询字符串,在httperr日志中以不可复制的十六进制形式(查询字符串为UTF8 – 希腊语),而在正常日志中,查询字符串既可见又可复制.截图提供如下.

我还提供了第二个截图,其中包含当前设置

HTTPERR logfile …错误从连接丢弃开始,然后稍后关闭连接
http://img32.imageshack.us/img32/3796/9nkv.jpg

在第二个屏幕截图中是我当前的设置:1)启用php扩展,2)defaultapppool(网站运行的池)设置3)php fastcgi设置和4)php运行时限制.
http://img34.imageshack.us/img34/2531/o6d1.jpg

我今天调整的最后一个设置是每3分钟自动回收一次defaultapppool并禁用动态内容压缩.将会看到这将如何发展.

如果有人对解决方案有任何提示/想法,我会很感激!

先感谢您.

最佳答案 我可以建议转到5.3.27(5.3的最终版本),看看是否修复了它?在20到27之间修复的崩溃错误太多了.可能是明显的解决方案,但值得一试.

点赞