我的服务器上安装了 Nginx + PHP FPM。我们正在为 30 个并发用户长期加载服务器。
对于初始用户,它工作正常,但一段时间后它开始抛出 502 bad gateway 错误。
我放了一些nginx php-fpm的日志和php-fpm的慢日志。
由于长时间运行的脚本和服务器上的负载,有条目记录在 php-fpm 的慢日志中。我认为这是 502 bad gateway 错误的原因。但我不知道如何解决这个问题。
- 我需要在 php-fpm.conf 中进行哪些调整才能解决此错误?
- 如何让 nginx 长时间等待 php-fpm 的响应?
- 如何增加 php-fpm 最大执行时间?
以下是附上的日志。
NGINX 日志
2013/01/29 15:03:38 [错误] 2493#0: 1046562 recv() 在从上游读取响应标头时失败(104:对等方重置连接),客户端:49.248.0.2,服务器:** * * .com,请求:“GET MY_SCRIPT_URI HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“ * **** .com”,引用者:“MY_SCRIPT_URL”
2013/01/29 15:03:39 [错误] 2493#0: 1046561 recv() 在从上游读取响应标头时失败(104:对等方重置连接),客户端:49.248.0.2,服务器:** * .com,请求:“GET MY_SCRIPT_URI HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“ * **** .com”,引用者:“MY_SCRIPT_URL”
这种类型的错误很多,并且在整个文件中重复出现。
PHP FPM 日志
[14-Feb-2013 12:54:13] ERROR: failed to ptrace(PEEKDATA) pid 10748: Input/output error (5)
[14-Feb-2013 12:54:18] ERROR: failed to ptrace(PEEKDATA) pid 10112: Input/output error (5)
[14-Feb-2013 12:54:18] ERROR: failed to ptrace(PEEKDATA) pid 12147: Input/output error (5)
[14-Feb-2013 12:54:19] ERROR: failed to ptrace(PEEKDATA) pid 30857: Input/output error (5)
[snip: many more]
PHP FPM 慢日志
[14-Feb-2013 12:55:13] [pool www] pid 10748 script_filename = MY_SCRIPT_PATH [0x00007f446e8e06b0] curl_exec() MY_SCRIPT_PATH_1.php:317 [0x00007f446e8e0490] callService() MY_SCRIPT_PATH_2:1331 [0x00007f446e8e0148] convertToPurchaseOrders() MY_SCRIPT_PATH_3:15 [0x00007fff0102b4d0] convertToPurchaseOrders() 未知:0 [0x00007f446e8de0d8] call_user_func_array() MY_SCRIPT_PATH_4:359 [0x00007f446e8dd4d0] +++ 转储失败
[14-FEB-2013 12:55:13] [pool www] pid 10117 script_filename = my_script_path [0x00007f446e8e8e06b0 curl_exec(curl_exec()my_sscript_ppath_ppath_ppath_ppath_path_path_path_path_path_path_path_path_path_path:317 [0x000077f446e.346e.88e.8e8e8ebeservice_14.814ebevice]:34.14.8e8ebeervice) [0x00007fff0102b4d0] convert() 未知:0 [0x00007f446e8de0d8] call_user_func_array() MY_SCRIPT_PATH_4:359 [0x00007f446e8dd4d0] +++ 转储失败