雲伺服器出現502錯誤的原因分析和解決方案

暗色調56發表於2019-09-23

雲伺服器出現502錯誤不要慌,當雲伺服器上面的網站出現502錯誤時,說明伺服器作為閘道器或代理,從上游伺服器收到無效響應。本文宵雲網路就對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使用率突然降至很低,系統負載突然升至很高,檢視網路卡的流量,也會發現突然降到了很低。一般這種情況只持續數秒鐘便可恢復。

雲伺服器上網站出現502錯誤的原因有很多,不同的原因其解決方法也會不同,當出現502錯誤時,我們首要的任務便是找出問題所在,知道問題出現在哪,解決問題也就方便得多。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69948047/viewspace-2657900/,如需轉載,請註明出處,否則將追究法律責任。

相關文章