我在各种共享主机上的基于
PHP / MysqL的站点上一直有500个内部服务器错误.我在共享的Linux服务器上使用PHP 5.2.17到CGI / FastCGI.当我查看日志时,我看到了这个:
[error] [client 75.71.176.224] (104)Connection reset by peer: FastCGI: comm with server "/dev/shm/blackmou-PHP.fcgi" aborted: read Failed,referer: ... [error] [client 75.71.176.224] FastCGI: incomplete headers (0 bytes) received from server "/dev/shm/blackmou-PHP.fcgi",referer: ... [error] [client 75.71.176.224] (104)Connection reset by peer: FastCGI: comm with server "/dev/shm/blackmou-PHP.fcgi" aborted: read Failed,referer: ... [error] [client 75.71.176.224] FastCGI: incomplete headers (0 bytes) received from server "/dev/shm/blackmou-PHP.fcgi",referer: ...
谁知道如何解决这个问题?
此问题通常不仅仅是特定于主机,它还与开发人员相关,具体取决于配置.
但是有些主机对FastCGI非常严格,会限制你的能力.
在不使用FastCGI的情况下运行通常更容易,只需使用mod_PHP,除非您特别需要在应用程序中使用FastCGI.
但是有些主机对FastCGI非常严格,会限制你的能力.
在不使用FastCGI的情况下运行通常更容易,只需使用mod_PHP,除非您特别需要在应用程序中使用FastCGI.
我们需要看到你的fcgi包装器(在/dev/shm/blackmou-PHP.fcgi中有什么用)或.htaccess用于FastCGI生成,以便更好地帮助你,而不必知道出现问题的那些文件和代码.
您的主机也使用Apache,LightHttpd或Nginx(或组合)吗?
那时我强烈建议更新以使用PHP 5.3.9
由于这可能是由许多问题引起的,因此FastCGI可以有效地防止您的站点/脚本被拒绝服务攻击或因内存泄漏等而崩溃等.
(EG:试图通过删除和限制请求数量或通过超时和终止进程而陷入无限循环来处理80,000个连接)
特别是此错误通常是由idle_timeout(默认为30秒)或max children进程限制引起的.
它也可能是由于某人在脚本完成之前启动了长时间运行的脚本并关闭其浏览器/连接.
FastCGI启动其进程包装器,执行命令,在完成进程之前超时,连接被视为由对等方重置.
另一个例子是达到max children(maxProcesses)(EG:许多网站显示2或4作为一个例子,实际上你可能需要20或50,具体取决于平均流量)
如果所有子项当前都处于活动状态并且还有其他请求/连接,则子项限制为maxProcesses,FastCGI将不与其共享活动子项,因此必须先终止该进程并启动新的子进程,或者删除请求,具体取决于您的配置.
以下是有关设置的更多信息:
http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html
http://www.fastcgi.com/drupal/node/10
包装示例
PHP_FCGI_CHILDREN=0 #no limit export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=10000 export PHP_FCGI_MAX_REQUESTS
UPDATE