NGINX+;高负载下的PHP5-FPM segfaults

NGINX+;高负载下的PHP5-FPM segfaults,nginx,segmentation-fault,fastcgi,apc,php,Nginx,Segmentation Fault,Fastcgi,Apc,Php,我整天都在处理这个问题,这让我发疯。所有谷歌搜索结果和搜索结果都会走向死胡同。我希望有人能与我合作,为我自己和未来的受害者提供解决方案。我们开始吧 我正在运行一个非常受欢迎的网站,每天的页面浏览量超过300万次。平均每秒34个页面浏览量,但更现实的是,在高峰时段,每秒超过300个页面浏览量。将这些视为请求 我正在运行一个Ubuntu 10.04 64位服务器,带有2个E5620 CPU、12GB RAM和一个Micron P300 6Gb/s SSD。在高峰时间,CPU和内存负载是平均的(使用2

我整天都在处理这个问题,这让我发疯。所有谷歌搜索结果和搜索结果都会走向死胡同。我希望有人能与我合作,为我自己和未来的受害者提供解决方案。我们开始吧

我正在运行一个非常受欢迎的网站,每天的页面浏览量超过300万次。平均每秒34个页面浏览量,但更现实的是,在高峰时段,每秒超过300个页面浏览量。将这些视为请求

我正在运行一个Ubuntu 10.04 64位服务器,带有2个E5620 CPU、12GB RAM和一个Micron P300 6Gb/s SSD。在高峰时间,CPU和内存负载是平均的(使用20-30%的CPU和一半的内存)

为这个站点提供动力的软件是:NGINX、MySQL、PHP5-FPM、PHP-APC和Memcached。好的,现在最后是文章的重点,这里是我的错误日志。记录了大量的错误

/var/log/php5 fpm

7月20日14:49:47.289895[通知]fpm正在运行,pid 29373

7月20日14:49:47.337092[通知]准备处理连接

7月20日14:51:23.957504[错误][pool www]无法检索一个或多个子(ren)的进程活动。稍后将重试

7月20日14:51:41.846439[警告][pool www]child 29534在距离开始114.518174秒后以代码1退出

7月20日14:51:41.846797[通知][pool www]child 29597开始

7月20日14:51:41.896653[警告][pool www]child 29408在启动114.596706秒后根据信号11 SIGSEGV退出

7月20日14:51:41.897178[通知][pool www]child 29598开始

7月20日14:51:41.903286[警告][pool www]child 29398在启动114.605761秒后以代码1退出

7月20日14:51:41.903719[通知][pool www]child 29600开始

7月20日14:51:41.907816[警告][pool www]child 29437在启动114.601417秒后以代码1退出

7月20日14:51:41.908253[通知][pool www]child 29601开始

7月20日14:51:41.916002[警告][pool www]child 29513在距离启动114.592514秒后退出,代码为1

7月20日14:51:41.916501[通知][pool www]child 29602开始

7月20日14:51:41.916558[警告][pool www]child 29494在启动114.597355秒后根据信号11 SIGSEGV退出

7月20日14:51:41.916873[通知][pool www]child 29603开始

7月20日14:51:41.921389[警告][pool www]child 29502在启动114.600405秒后以代码1退出

/var/log/nginx/error.log 2011/07/20 15:48:42[错误]29583#0:*569743 readv()在读取上游时失败(104:由对等方重置连接),客户端:77.223.197.193,服务器:domain.com,请求:“GET/favicon.ico HTTP/1.1”,上游:fastcgi://127.0.0.1:9000,主机:“www.domain.com”


2011/07/20 15:48:42[错误]29578#0:*571695 readv()在读取上游时失败(104:由对等方重置连接),客户端:150.70.64.196,服务器:domain.com,请求:“GET/page HTTP/1.0”,上游:fastcgi://127.0.0.1:9000,主机:“www.domain.com”


2011/07/20 15:48:42[错误]29581#0:*571050 readv()读取上游时失败(104:由对等方重置连接),客户端:110.136.157.66,服务器:domain.com,请求:“GET/page HTTP/1.1”,上游:fastcgi://127.0.0.1:9000,主机:“www.domain.com”


2011/07/20 15:48:42[错误]29581#0:*564892 readv()在读取上游时失败(104:由对等方重置连接),客户端:110.136.161.214,服务器:domain.com,请求:“GET/page HTTP/1.1”,上游:fastcgi://127.0.0.1:9000,主机:“www.domain.com”


2011/07/20 15:48:42[错误]29585#0:*456171 readv()在读取上游时失败(104:由对等方重置连接),客户端:93.223.33.135,服务器:domain.com,请求:“GET/favicon.ico HTTP/1.1”,上游:fastcgi://127.0.0.1:9000,主机:“www.domain.com”


2011/07/20 15:48:42[错误]29585#0:*471192 readv()读取上游时失败(104:由对等方重置连接),客户端:74.90.33.142,服务器:domain.com,请求:“GET/page HTTP/1.1”,上游:fastcgi://127.0.0.1:9000,主机:“www.domain.com”


2011/07/20 15:48:42[错误]29580#0:*570132 readv()读取上游时失败(104:由对等方重置连接),客户端:180.246.182.191,服务器:domain.com,请求:“GET/page HTTP/1.1”,上游:fastcgi://127.0.0.1:9000,主机:“www.domain.com”


最后,我想指出,我确实尝试禁用PHP-APC,以查看它是否是opt缓存的错误,但SEGFULTS仍然存在。我还安装了PHP5-SUHOSIN,我也禁用了它,但错误仍然在发生。

<2011/07/20 15:48:42[error]29583#0:*569743 readv()在读取上游时失败(104:由对等方重置连接),客户端:77.223.197.193,服务器:domain.com,请求:“GET/favicon.ico HTTP/1.1”,上游:fastcgi://127.0.0.1:9000“,主持人:“www.domain.com”

这只是上游服务器/路由器/客户端重置配置的一些问题? nginx的一部分放弃了请求,但是以您描述的3倍的负载运行一个站点。我从未看到过这条消息,请求的资源并没有公平地分配给php fpm进程,这是一个favicon

对于php fpm消息 孩子们似乎在114秒限制后停止了,这是由php.ini文件设置的限制吗?
php中的seg错误通常发生在使用高内存时,您的php脚本可能会泄漏内存,并最终达到内存限制,让php fpm进程提供较少的请求有助于处理内存泄漏问题参见我的答案,这与您的问题有关(关于nginx+magento和高负载)


这不是一个直接的答案,但它可能会帮助您配置nginx+php fpm以帮助消除故障。

这个问题正好发生在我身上


PHP5-FPM的大多数子项上都有SEGFULTS。在我的情况下,硬盘上有0字节可用。快速日志切碎停止了SEGFULTS。

您可能正在使用suhosin 在/etc/php5/fpm/co下禁用ths suhosin.ini