當前位置:編程學習大全網 - 行動軟體 - php出現502是什麽問題?

php出現502是什麽問題?

502 Bad Gateway是壹種報錯提示,這壹錯誤並不意味著上遊服務器已關閉(無響應網關/代理),而是上遊服務器和網關/代理不同意的協議交換數據。

第壹種原因:目前lnmp壹鍵安裝包比較多的問題就是502 Bad Gateway,大部分情況下原因是在安裝php前,腳本中某些lib包可能沒有安裝上,造成php沒有編譯安裝成功。解決辦法:可以嘗試根據lnmp壹鍵安裝包中的腳本手動安裝壹下,看看是什麽錯誤導致的。

第二種原因:在php.ini裏,eaccelerator配置項壹定要放在Zend Optimizer配置之前,否則也可能引起502 Bad Gateway

第三種原因:在安裝好使用過程中出現502問題,壹般是因為默認php-cgi進程是5個,可能因為phpcgi進程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當增加。

第四種原因:php執行超時,修改/usr/local/php/etc/php.ini 將max_execution_time?改為300。

第五種原因:磁盤空間不足,如mysql日誌占用大量空間。

第六種原因:查看php-cgi進程是否在運行。

另外的解決辦法:

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

php-fpm.conf有兩個至關重要的參數,壹個是max_children,另壹個是request_terminate_timeout,但是這個值不是通用的,而是需要自己計算的。

在安裝好使用過程中出現502問題,壹般是因為默認php-cgi進程是5個,可能因為phpcgi進程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當增加。

計算的方式如下:如果服務器性能足夠好,且寬帶資源足夠充足,PHP腳本沒有系循環或BUG的話可以直接將?request_terminate_timeout設置成0s。0s的含義是讓PHP-CGI壹直執行下去而沒有時間限制。如果做不到這壹點,也就 是說PHP-CGI可能出現某個BUG,或者寬帶不夠充足或者其他的原因導致PHP-CGI假死那麽就建議給?request_terminate_timeout賦壹個值,這個值可以根據服務器的性能進行設定。壹般來說性能越好可以設置越高,20分鐘-30分 鐘都可以。

而max_children這個值又是怎麽計算出來的呢?這個值原則上是越大越好,php-cgi的進程多了就會處理的很快,排隊的請求就會很少。 設置max_children也需要根據服務器的性能進行設定,壹般來說壹臺服務器正常情況下每壹個php-cgi所耗費的內存在20M左右。

按照官方的答案,排查了相關的可能,並結合了網友的答案,得出了下面的解決辦法:

1、查看php fastcgi的進程數(max_children值)代碼:netstat -anpo | grep “php-cgi” | wc -l

5(假如顯示5)

2、查看當前進程,代碼:top觀察fastcgi進程數,假如使用的進程數等於或高於5個,說明需要增加(根據機器實際狀況而定)

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

<value name=”max_children”>10</value>

<value name=”request_terminate_timeout”>60s</value>

max_children最多10個進程,按照每個進程20MB內存,最多200MB。

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

  • 上一篇:夢幻西遊魔獸要訣四害是哪些
  • 下一篇:地下城與勇士安裝程序的文件名字是什麽
  • copyright 2024編程學習大全網