2010/09/19 14:52:07 [error] 1419#0: *10220 recv() failed
(104: Connection reset by peer) while reading response header from upstream,
client: [...], server: [...], request: "POST /[...] HTTP/1.1", upstream:
"fastcgi://unix:/server/php-fpm.sock:", host: "[...]",
referrer: "[...]"
这是我随机收到的错误。95% 的时间我的设置都运行正常,但偶尔我会在 3-4 个后续请求中收到 502 错误。
正如您所见,我在服务器和 PHP 进程之间使用了 Unix 套接字,并且正确设置了 FastCGI 参数(SCRIPT_FILENAME)等。
我可以做些什么来加强这些服务之间的联系?
提前非常感谢您。
答案1
看看你的 php5-fpm.conf,你可能已经达到了 pm.max_children 限制,这也是你的服务器可以处理的同时请求数量。
如果你的脚本可能会产生进程(小心僵尸进程!)或者你有长时间执行的请求,那么这个限制很容易达到。
答案2
我经常听说 PHP-FPM 在 Unix 套接字方面存在问题。尝试切换到 Inet 套接字。坦率地说,在同样的情况下,它对我没什么帮助,但它可能会对你有所帮助 :)。
答案3
你应该耗尽了一些系统资源(例如 somaxcon、maxfiles 等)
检查你的
# netstat -s
丢失、错误和无缓冲
因此你可以使用 sysctl (例如 max_dgram_qlen)