寶塔網站日志出現大量502錯誤如何解決


一、 狀態碼解釋 

502 Bad Gateway:作為網關或者代理工作的服務器嘗試執行請求時,從上游服務器接收到無效的響應。 

二、502 Bad Gateway原因分析 

將請求提交給網關如php-fpm執行,但是由於某些原因沒有執行完畢導致php-fpm進程終止執行。說到此,這個問題就很明了了,與網關服務如php-fpm的配置有關了。 


php-fpm.conf配置文件中有兩個參數就需要你考慮到,分別是max_children和request_terminate_timeout。 


max_children最大子進程數,在高並發請求下,達到php-fpm最大響應數,后續的請求就會出現502錯誤的。可以通過netstat命令來查看當前連接數。 


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


當積累了大量的php請求,你重啟php-fpm釋放資源,但一兩分鍾不到,502又再次呈現,這是什么原因導致的呢? 這時還應該考慮到數據庫,查看下數據庫進程是否有大量的locked進程,數據庫死鎖導致超時,前端終止了繼續請求,但是SQL語句還在等待釋放鎖,這時就要重啟數據庫服務了或kill掉死鎖SQL進程了。 


對於長時間的請求可以考慮使用異步方式,可以參閱《關於PHP實現異步操作的研究》。 

總而言之,502錯誤主要從四個方向入手: 
1. max_children 
2. request_terminate_timeout、max_execution_time 
3. 數據庫 
4. 網關服務是否啟動如php-fpm 

三、解決方法

提高php的性能配置即可

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM