gpt4 book ai didi

IIS 7.5 中的 PHP 崩溃(连接断开,连接被放弃)

转载 作者:可可西里 更新时间:2023-11-01 14:18:44 25 4
gpt4 key购买 nike

我在使用 IIS 和 PHP(加上一个 com dll)时遇到了一些问题。 COM dll 经常崩溃,但我认为问题不是因为这个(我禁用了快速故障保护),因为 dll 总是崩溃,而问题是大约三周前我们到达时开始的大约 15.000 个用户/天。

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

这几乎总是发生在高峰时段(下午 3-4-5 点),此时谷歌分析显示 180-220 个“在线用户”。当这种情况发生时(我的意思是 PHP 吓坏了)我可以在服务器的任务管理器中看到,而不是通常的 10-12 个 php-cgi.exe 进程,它们激增到 30 或 40 个 php-cgi.exe 进程(约 30 MB RAM each) ,我猜这是因为 php-cgi.exe 停止处理请求。服务器总共有 8GB RAM。

错误日志包括 connection_abandoned_by_regqueueconnection_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。

出于某些奇怪的原因,notepad++ 以不可复制的十六进制形式(查询字符串为 UTF8 - 希腊语)在 httperr 日志中显示已放弃/禁用查询的查询字符串,而在正常日志中,查询字符串都是可见的和可复制的。下面提供了屏幕截图。

我还提供了当前设置的第二个屏幕截图

HTTPERR 日志文件...错误从连接断开开始,然后是连接被放弃 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 之间修复的崩溃错误太多,无法计数。可能是显而易见的解决方案,但值得一试。

关于IIS 7.5 中的 PHP 崩溃(连接断开,连接被放弃),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19242144/

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