最近公司網站頻繁出現502錯誤,連接靜態頁沒問題,只要連接數據庫的網頁就報502錯誤,經過查找終於找到原因了
什麼原因導致502錯誤? 在網上看了很多解決方法,在這裏總結一下,如有錯誤,請指出,謝謝!
1:php-cgi進程數不夠用 (我就是採用此方法解決的)
vim php-fpm.conf
修改其中的2個參數
(1)在安裝好使用過程中出現502問題,一般是因爲默認php-cgi進程是5個,可能因爲phpcgi進程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當增加
這個數值是不確定的 需要我們自己算的,這個值原則上是越大越好,php-cgi的進程多了就會處理的很快,排隊的請求就會很少,減小出現502錯誤的機率。
一般來說,一臺服務器的正常情況下每一個php-cgi要耗費的內存爲20M左右。如果我就將此值設爲80,那麼也就是說大概要耗費服務器1600M內存。
查看一下當前系統中有多少個php-cgi進程在運行
netstat -anpo | grep php-cgi | wc -l
如果這個值接近你的在配置文件裏面設置的值,說明需要增加
注:這要根據機器的實際情況而定,每個機器的硬件設施和環境不一樣
參數爲:<value name=”max_children”>80</value>
(2)另外一個參數就是php-cgi腳本的執行時間
<value name=”request_terminate_timeout”>0s</value>這裏寫0s的意思是讓php-cgi一直執行下去,沒有時間限制。
注意:如果你做不到這一點,也就 是說你的PHP-CGI可能出現某個BUG,或者你的寬帶不夠充足或者其他的原因導致你的PHP-CGI假死那麼就建議你給 request_terminate_timeout賦一個值,這個值可以根據服務器的性能進行設定。一般來說性能越好你可以設置越高,20分鐘-30分 鍾都可以。
修改完這兩個參數,重啓一下php-cgi,看是否還出現502錯誤
2: php執行時間長
php執行超時,修改/usr/local/php/etc/php.ini 將max_execution_time 改爲300
重啓一下php-cgi,看是否還出現502錯誤
3: php-cgi進程死掉
殺死其進程,重啓php-cgi