1. 程式人生 > >Nginx 502 Bad Gateway錯誤的解決辦法

Nginx 502 Bad Gateway錯誤的解決辦法

request_terminate_timeout執行的時間為60秒,也就是1分鐘。


#################################################

網站執行環境是Nginx +php fastcgi模式的。這幾天執行一直不穩定,總是出錯,報502錯誤。
今天跟以前的同事請教了一下,他告訴我檢查一下php-fpm的日誌,那裡記錄了很多有用的資訊。
於是我檢查了一下,發現確實有很多報錯資訊:

Sep 30 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200, cur:51200 
如果和nginx.conf : worker_rlimit_nofile 65500
; 不一致必須檢查,設定重啟服務
Mar 01 14:39:15.881047 [NOTICE] fpm_children_make(), line 352: child 12364 (pool default) started
Mar 01 14:39:21.715825 [NOTICE] fpm_got_signal(), line 48: received SIGCHLD
Mar 01 14:39:21.715899 [NOTICE] fpm_children_bury(), line 215: child 11947 (pool default) exited with code 0 after 175.443305 seconds from start

有的報錯資訊,就好說了,直接上網查資訊。
經過搜尋,最後總結出以下幾條優化策略:

1、提升伺服器的檔案控制代碼開啟開啟

# vi /etc/security/limits.conf 加上
* soft nofile 65500
* hard nofile 65500

2、提升nginx的程序檔案開啟數

nginx.conf : worker_rlimit_nofile 65500;

3、修改php-fpm.conf檔案,主要需要修改2處。

命令 ulimit -n 檢視限制的開啟檔案數,php-fpm.conf 中的選項rlimit_files 確保和此數值一致。

<value name=”max_requests”>10240</value>

<value name=”rlimit_files”>65500</value>

4、
# vi /etc/sysctl.conf
底部新增
fs.file-max=65500
經過以上修改,重啟PHP。/usr/local/webserver/php/sbin/php-fpm restart

在檢視ulimit -n 是否生效,否則重啟伺服器或者/etc/sysctl.conf、/etc/security/limits.conf的配置生效
到目前為止還沒有出現過以上的報錯資訊。一切執行正常。