connectionreset by peer(常见原因及解决办法)

频道:滋补养生 日期: 浏览:215

connectionreset by peer(常见原因及解决办法)

502 bad gateway
最近遇到了 recv() failed (104: Connection reset by peer) while reading response header from upstream 的错误,百度了一下,发现几乎都是一个人写的:
服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭客户关掉了浏览器,而服务器还在给客户端发送数据浏览器端按了Stop防火墙的问题如果是2,3导致的Connection reset by peer,nginx的access_log里会出现对应的499 状态码,但实际上accss_log里并没有此状态码,所以问题不是出在客户端。那就是服务端的问题。
现在的php 配置为每个进程可以同时处理5个请求。
php.ini:
max_execution_time  = 30, 每个请求最多执行30s。
php-fpm.conf:
request_terminate_timeout = 10
php-fpm 中配置的是超过10s的进程会被kill。如果一个请求在10s内没响应的话,进程被kill,然后 nginx得不到上游的响应就会报reset by peer 错误。一个进程被kill后,最多可能影响5个请求。这也就是为啥有3个请求同时报 reset by peer的错误。这种情况,php无Fatal error超时日志,http状态码为502,php-fpm日志中有杀掉子进程日志,php进程进行会进行重启,影响性能。
建议将php-fpm.conf中 request_terminate_timeout 设为0,即不超时,php.ini 中的max_execution_time 设置为10,这样当请求超过10s时,php有Fatal error超时日志,http状态码为500。


关键词:connectionreset