[转]解决 recv() failed (104: Connection reset by peer) while reading response header from upstream

在linux上查找www.conf

find / | grep www.conf

再编辑www.conf里面的requestterminatetimeout = 0

———————————————————————————-

Nginx出现502 Bad Gateway 错误,

查了Nginx的错误日志为:

2014/08/02 16:14:31 [error] 17029#0: *17941 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 210.61.12.2, server: blog.lixiphp.com, request: “POST /api/1.0 HTTP/1.1″, upstream: “fastcgi://127.0.0.1:9000″, host: “blog.lixiphp.com”2014/08/02 16:24:52 [error] 29615#0: *3 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 58.220.197.35, server: blog.lixiphp.com, request: “GET /404 HTTP/1.1″, upstream: “fastcgi://127.0.0.1:9000″, host: “blog.lixiphp.com”

不要使用php-fpm的requestterminatetimeout,最好设成requestterminatetimeout=0;

vi /etc/php-fpm.d/www.conf

修改为:

; The timeout for serving a single request after which the worker process will

; be killed. This option should be used when the ‘maxexecutiontime’ ini option

; does not stop script execution for some reason. A value of ’0′ means ‘off’.

; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)

; Default Value: 0

requestterminatetimeout = 0

因为这个参数会直接杀掉php进程,然后重启php进程,这样前端nginx就会返回104: Connection reset by peer。这个过程是很慢,总体感觉就是网站很卡。

重启 php-fpm 和 Nginx 一切正常。

service nginx restart

killall php-fpm

php-fpm

再打开就OK了。