首頁  >  文章  >  運維  >  nginx 502 bad gateway問題怎麼解決

nginx 502 bad gateway問題怎麼解決

步履不停
步履不停原創
2019-06-21 10:30:5913113瀏覽

nginx 502 bad gateway問題怎麼解決

Nginx 502 Bad Gateway的意思是請求的PHP-CGI已經執行,但由於某種原因(一般是讀取資源的問題)沒有執行完畢而導致PHP-CGI進程終止,一般來說Nginx 502 Bad Gateway和php-fpm.conf的設定有關。

常見的原因可能是php-cgi行程數不夠用、php執行時間長(mysql慢)、或是php-cgi行程死掉,都會出現502錯誤。

1. 在安裝好的環境中,運行一段時間出現502問題,一般是因為預設php-cgi進程是5個,可能因為phpcgi進程不夠用而造成502,需要修改/usr/local /php/etc/php-fpm.conf 將其中的max_children值適當增加。

2. php執行逾時,修改/usr/local/php/etc/php.ini 將max_execution_time 改為300

3. 磁碟空間不足,可以使用# df -h指令查看磁碟使用量

4. php-cgi進程死掉了。

通常的檢查方法如下:

1、查看php fastcgi的進程數(max_children值)

# netstat -anop | grep php-cgi | wc -l
# netstat -anpo | grep php-fpm | wc -l

假如顯示是5

2、查看目前進程

# ps aux | grep php-fpm 观察fastcgi/php-fpm进程数,假如使用的进程数等于或高于5个,说明需要增加。

3、調整/usr/local/php/etc/php-fpm.conf 的相關設定

pm.max_children = 5
request_terminate_timeout = 60

max_children最多5個進程,依照每個進程20MB內存,最多100MB。也就是1分鐘。 max_children增多,則php-cgi的進程多了就會處理的很快,排隊的請求就會很少。

但是設定max_children也需要依照伺服器的效能設定,一般來說一台伺服器正常狀況下每一個php-cgi所耗費的內存在20M左右。根據自己伺服器購買的記憶體來實際決定。

request_terminate_timeout執行的時間為60秒,request_terminate_timeout值可以根據伺服器的效能進行設定。一般來說效能越好你可以設定越高,20分鐘-30分鐘都可以。

4. 部分PHP程式的執行時間超過了Nginx的等待時間,可以適當增加nginx.conf設定檔中FastCGI的timeout時間,例如:

http
{
......
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
......}

#更多Nginx相關技術文章,請造訪Nginx教學欄位進行學習!

以上是nginx 502 bad gateway問題怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn