Nginx + PHP FastCGI 結構中的錯誤[WARNING] fpm_stdio_child_said()
Nginx + PHP FastCGI 問題!
PHP 5.2.8 (cli) (built: Dec 18 2008 17:07:40)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
redhat as4 x64 OS
目前我們的BBS跑在這台結構上,在每天早上八點併發非常高,達到五百多,平時也就幾十個併發!
基本要一個小時就降下來了.
在Nginx 日誌中發現很多 http 1.0 499 的錯誤!
在php fpm日誌中:
Feb 05 09:26:40.021385 fpm_stdio_child_said(), line 167: child 3506 (pool default) said into stderr: "Feb 05 09:26:39.902098 fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Feb 05 09:26:40.021399 fpm_stdio_child_said(), line 167: child 3505 (pool default) said into stderr: "Feb 05 09:26:39.901068 fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Feb 05 09:26:40.021411 fpm_stdio_child_said(), line 167: child 3504 (pool default) said into stderr: "Feb 05 09:26:39.900091 fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Feb 05 09:26:40.021423 fpm_stdio_child_said(), line 167: child 3503 (pool default) said into stderr: "Feb 05 09:26:39.899033 fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Feb 05 09:26:40.021434 fpm_stdio_child_said(), line 167: child 3502 (pool default) said into stderr: "Feb 05 09:26:39.897976 fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Feb 05 09:26:40.021446 fpm_stdio_child_said(), line 167: child 3501 (pool default) said into stderr: "Feb 05 09:26:39.896965 fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Feb 05 09:26:40.021458 fpm_stdio_child_said(), line 167: child 3500 (pool default) said into stderr: "Feb 05 09:26:39.895947 fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Feb 05 09:26:40.021469 fpm_stdio_child_said(), line 167: child 3499 (pool default) said into stderr: "Feb 05 09:26:39.895359 fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Feb 05 09:26:40.021481 fpm_stdio_child_said(), line 167: child 3498 (pool default) said into stderr: "Feb 05 09:26:39.894365 fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Feb 05 09:26:40.021493 fpm_stdio_child_said(), line 167: child 3497 (pool default) said into stderr: "Feb 05 09:26:39.893403 fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Feb 05 09:13:09.603827 fpm_children_make(), line 352: child 3293 (pool default) started
Feb 05 09:13:09.604856 fpm_children_make(), line 352: child 3294 (pool default) started
Feb 05 09:13:09.605872 fpm_children_make(), line 352: child 3295 (pool default) started
Feb 05 09:13:09.606238 fpm_children_make(), line 352: child 3296 (pool default) started
Feb 05 09:13:09.607581 fpm_children_make(), line 352: child 3297 (pool default) started
Feb 05 09:13:09.608598 fpm_children_make(), line 352: child 3298 (pool default) started
Feb 05 09:13:09.609501 fpm_children_make(), line 352: child 3299 (pool default) started
Feb 05 09:13:09.610785 fpm_children_make(), line 352: child 3300 (pool default) started
Feb 05 09:13:09.611807 fpm_children_make(), line 352: child 3301 (pool default) started
Feb 05 09:13:09.611834 fpm_event_loop(), line 107: libevent: entering main loop
但當時系統負載基本空閑:
top - 09:12:54 up 96 days, 18:16, 4 users, load average: 0.25, 0.12, 0.06
Tasks: 233 total, 2 running, 229 sleeping, 0 stopped, 2 zombie
Cpu(s): 0.4% us, 0.2% sy, 0.0% ni, 99.1% id, 0.0% wa, 0.1% hi, 0.2% si
Mem: 4024900k total, 3660740k used, 364160k free, 89172k buffers
Swap: 8385888k total, 208k used, 8385680k free, 2306264k cached
PID USER PR NI %CPU TIME+ %MEM VIRT RES SHR S COMMAND
3094 www 15 0 0 0:00.72 0.9 50400 33m 1004 S nginx: worker process
3092 www 15 0 0 0:00.52 0.8 48352 31m 992 S nginx: worker process
3093 www 15 0 0 0:00.67 0.8 47328 30m 992 S nginx: worker process
3098 www 15 0 0 0:00.26 0.8 46304 29m 976 S nginx: worker process
3095 www 15 0 0 0:00.23 0.7 44256 27m 980 S nginx: worker process
3119 www 15 0 0 0:00.27 0.7 44256 27m 980 S nginx: worker process
3097 www 15 0 2 0:00.18 0.7 44256 27m 964 S nginx: worker process
3118 www 15 0 0 0:00.24 0.7 43232 27m 972 S nginx: worker process
3114 www 15 0 0 0:00.22 0.7 43232 27m 976 S nginx: worker process
3091 www 15 0 0 0:00.19 0.7 43232 26m 964 S nginx: worker process
3113 www 15 0 0 0:00.12 0.7 43232 26m 972 S nginx: worker process
3101 www 15 0 0 0:00.09 0.7 43232 25m 948 S nginx: worker process
3100 www 15 0 0 0:00.08 0.7 43232 25m 948 S nginx: worker process
3117 www 15 0 0 0:00.07 0.7 43232 25m 972 S nginx: worker process
3099 www 15 0 0 0:00.08 0.6 43232 25m 964 S nginx: worker process
3090 www 15 0 0 0:00.06 0.6 43232 25m 964 S nginx: worker process
3096 www 15 0 0 0:00.05 0.6 43232 25m 960 S nginx: worker process
3116 www 15 0 0 0:00.05 0.6 43232 24m 936 S nginx: worker process
3110 www 15 0 0 0:00.04 0.6 43232 24m 936 S nginx: worker process
3102 www 15 0 0 0:00.03 0.6 43232 24m 652 S nginx: worker process
3103 www 15 0 0 0:00.04 0.6 43232 24m 652 S nginx: worker process
3104 www 15 0 0 0:00.04 0.6 43232 24m 652 S nginx: worker process
3105 www 15 0 0 0:00.03 0.6 43232 24m 652 S nginx: worker process
3106 www 15 0 0 0:00.03 0.6 43232 24m 652 S nginx: worker process
3107 www 15 0 0 0:00.03 0.6 43232 24m 652 S nginx: worker process
3108 www 15 0 0 0:00.04 0.6 43232 24m 652 S nginx: worker process
3109 www 15 0 0 0:00.03 0.6 43232 24m 652 S nginx: worker process
3111 www 15 0 0 0:00.03 0.6 43232 24m 652 S nginx: worker process
3112 www 15 0 0 0:00.04 0.6 43232 24m 652 S nginx: worker process
3115 www 15 0 0 0:00.03 0.6 43232 24m 652 S nginx: worker process
3056 www 16 0 0 0:00.13 0.4 227m 15m 11m S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
3074 www 15 0 0 0:00.12 0.3 227m 13m 9104 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
3017 www 16 0 0 0:00.10 0.3 227m 12m 9032 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
2988 www 16 0 0 0:00.11 0.3 227m 12m 9108 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
2981 www 16 0 0 0:00.12 0.3 227m 12m 9044 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
3036 www 16 0 0 0:00.11 0.3 227m 12m 8780 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
3073 www 16 0 0 0:00.12 0.3 227m 12m 8968 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
2957 www 16 0 0 0:00.10 0.3 227m 12m 8716 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
2980 www 16 0 0 0:00.12 0.3 227m 12m 8608 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
3046 www 16 0 0 0:00.10 0.3 227m 12m 8660 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
3027 www 15 0 0 0:00.09 0.3 227m 12m 8840 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
3023 www 16 0 0 0:00.10 0.3 227m 12m 8700 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
3063 www 16 0 0 0:00.09 0.3 227m 12m 8472 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
3009 www 16 0 0 0:00.10 0.3 227m 12m 8452 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
3016 www 16 0 0 0:00.15 0.3 227m 12m 8740 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
2956 www 16 0 0 0:00.10 0.3 227m 12m 8628 S /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
《解決方案》
沒人遇到過這個問題嗎?現在又出現這個問題了,每天早上都會有一個小時,這三天以來!
《解決方案》
暈,我也遇到一樣的問題,環境基本相同,也是Nginx + PHP FastCGI,這兩天早上總有一段時間狂報499錯誤,用
netstat -anpo | grep "php-cgi" | wc -l
查看使用緊的進程數,居然比平常多出2~3倍,CPU幾乎耗盡,也是大概1個小時后就變回正常,不知何因。。。
《解決方案》
我的也是這個問題,當時看到網上有說是配置文件和啟動文件不一致導致的,可沒發現我的配置哪裡有不一致的
《解決方案》
如果前端沒有問題,請詳細分析一下後端是否有問題
《解決方案》
回復 #1 myfreeke 的帖子
呵呵...非得回復你這個,今天我遇到的問題跟你差不多哦,我花了很長時間才找到答案.錯誤跟你報的一樣,但沒看你的php-fpm.conf,所以也只能把我的解決方法寫在這裡.
這個rlimit_nofile的問題,和系統最大文件數有關,
1:ulimit -n
XXX
看看系統當前文件打開最大值為XXX
2:cat php-fpm.conf | grep rlimit
<value name="rlimit_files">XXX</value>
這兩個值一定要一樣.否則就會出上面日誌的錯誤.
《解決方案》
回復 #6 很溫暖 的帖子
感謝你的回復,我的這二個參數是配置的最大值,65535
後來也是這二個參數解決了這個問題,但是資料庫也有問題,我1K的資料庫連接一到高峰馬上用完,后採用DZ添加memcached的功能來解決所有問題
《解決方案》
你的配置是不是有問題?你的伺服器內存多大,PHP-CGI開多少個進程,NGINX開多少個?
《解決方案》
1.修改系統文件描述符數目
修改
/etc/security/limits.conf
加上
* soft nofile 65535
* hard nofile 65535
2.修改php-fpm 設置
修改 /usr/local/webserver/php/etc/php-fpm.conf
<value name="rlimit_files">65535</value>
<value name="max_requests">10000</value>
<value name="log_level">warn</value>
<value name="request_slowlog_timeout">5s</value>
3.重新登陸session,重啟php-fpm,使得新設置生效。
文件描述符數目 php-fpm reload不會生效,所以用 php-fpm restart
/usr/local/webserver/php/sbin/php-fpm restart
《解決方案》
可以試試spawn-fcgi 1.6.2 已經獨立成一個程序了 不用給php打補丁就能使用 經長期使用穩定性還不錯