NGINX + PHP5-FPM在高负载下发生了段错误

时间:2011-07-20 21:15:29

标签: nginx segmentation-fault fastcgi apc php

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

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

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

为本网站提供支持的软件包括:NGINX,MySQL,PHP5-FPM,PHP-APC和Memcached。好的,现在终于帖子的内容,这里是我的错误日志。记录了大量这些错误。

的/ var /日志/ PHP5-FPM

Jul 20 14:49:47.289895 [NOTICE] fpm正在运行,pid 29373

Jul 20 14:49:47.337092 [NOTICE]准备好处理连接

Jul 20 14:51:23.957504 [错误] [池www]无法检索一个或多个子(ren)的进程活动。稍后再试。

Jul 20 14:51:41.846439 [警告] [pool www] child 29534从开始的114.518174秒后退出代码1

Jul 20 14:51:41.846797 [NOTICE] [pool www] child 29597开始

Jul 20 14:51:41.896653 [警告] [游泳池www]儿童29408在开始后114.596706秒后退出信号11 SIGSEGV

Jul 20 14:51:41.897178 [NOTICE] [pool www] child 29598 start

Jul 20 14:51:41.903286 [警告] [pool www] child 29398从开始后114.605761秒退出代码1

Jul 20 14:51:41.903719 [NOTICE] [pool www] child 29600开始

Jul 20 14:51:41.907816 [警告] [pool www] child 29437从开始后114.601417秒退出代码1

Jul 20 14:51:41.908253 [NOTICE] [pool www] child 29601开始

Jul 20 14:51:41.916002 [警告] [pool www] child 29513从开始后114.592514秒退出代码1

Jul 20 14:51:41.916501 [NOTICE] [pool www] child 29602 start

Jul 20 14:51:41.916558 [警告] [游泳池www]儿童29494从开始后114.597355秒退出信号11 SIGSEGV

Jul 20 14:51:41.916873 [NOTICE] [pool www] child 29603开始

Jul 20 14:51:41.921389 [警告] [池www]子29502从开始114.600405秒后退出代码1

/var/log/nginx/error.log 2011/07/20 15:48:42 [错误] 29583#0:* 569743 readv()失败(104:通过对等方重置连接)在读取上游时,客户端:77.223.197.193,server:domain.com,request:“ 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,server: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,server: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,server: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,server: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,server: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,server:domain.com,请求:“GET / page HTTP / 1.1”,上游:“fastcgi://127.0.0.1:9000”,主持人:“www.domain.com”

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

4 个答案:

答案 0 :(得分:1)

这个问题刚好发生在我身上。

PHP5-FPM对其大多数孩子都有段错误。就我而言,我们在硬盘上有0字节可用。快速的日志碎片阻止了段错误。

答案 1 :(得分:0)

2011/07/20 15:48:42 [错误] 29583#0:* 569743 readv()失败(104:通过对等方重置连接)在读取上游时,客户端:77.223.197.193,server: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进程提供较少的请求有助于处理内存泄漏

答案 2 :(得分:0)

请在此处查看我的回答与您的问题相关(关于nginx + magento和高负载)

NGINX-FPM configuration settings for magento

它不是每个说法的直接答案,但它可以帮助您配置nginx + php-fpm以帮助消除故障。

答案 3 :(得分:0)

你可能正在使用suhosin 在/etc/php5/fpm/conf.d下禁用suhosin.ini并重启php5-fpm服务

检查suhosin版本并尝试安装另一个版本。