服務器502錯誤的原因分析

在這裏插入圖片描述

出現502錯誤的原因分析

將請求提交給網關,如php-fpm執行,但是由於某些原因沒有執行完畢導致php-fpm進程終止執行。那麼出現問題的地方便與網關服務如php-fpm的配置有關。max_children最大子進程數,在高併發請求下,達到php-fpm最大響應數,後續的請求就會出現502錯誤。可以通過netstat命令來查看當前連接數。

request_terminate_timeout 設置單個請求的超時終止時間。還應該注意到php.ini中的max_execution_time參數。當請求終止時,也會出現502錯誤的。

當積累了大量的php請求,此時重啓php-fpm釋放資源,但沒有幾分鐘的時間,又再次出現502錯誤,爲什麼呢?此時我們還應考慮是否與雲主機數據庫有關,查看下數據庫進程是否有大量的locked進程,數據庫死鎖導致超時,前端終止了繼續請求,但是SQL語句還在等待釋放鎖,這時就要重啓數據庫服務了或kill掉死鎖SQL進程了。

出現502錯誤的解決方案

當網站出現502問題時,可以先通過以下兩個步驟來解決:

1、查看當前的PHP FastCGI進程數是否夠用netstat -anpo | grep “php-cgi”| wc -l 如果實際使用的“FastCGI進程數”接近預設的“FastCGI進程數”,那麼,說明“FastCGI進程數”不夠用,需要增大。

2、部分PHP程序的執行時間超過了Nginx的等待時間,可以適當增加nginx.conf配置文件中FastCGI的timeout時間。

如果php.ini中memory_limit設偏低,修改php.ini的memory_limit爲64M,重啓nginx,說明PRH內存不足。

3、max-children和max-requests 一臺服務器上運行着nginx php(fpm) xcache,訪問量日均300W pv左右經常會出現這樣的情況:php頁面打開很慢,cpu使用率突然降至很低,系統負載突然升至很高,查看網卡的流量,也會發現突然降到了很低。一般這種情況只持續數秒鐘便可恢復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章