Nginx 502錯誤原因和解決方法總結

2021-09-25 02:48:25 字數 1245 閱讀 2750

一. 前沿

二. 狀態碼解釋

502 bad gateway:作為閘道器或者**工作的伺服器嘗試執行請求時,從上游伺服器接收到無效的響應。

504 gateway time-out:作為閘道器或者**工作的伺服器嘗試執行請求時,未能及時從上游伺服器(uri標識出的伺服器,例如http、ftp、ldap)或者輔助伺服器(例如dns)收到響應。

三. 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程序了。

四. 504 gateway time-out原因分析

504錯誤一般是與nginx.conf配置有關了。主要與以下幾個引數有關:fastcgi_connect_timeout、fastcgi_send_timeout、fastcgi_read_timeout、fastcgi_buffer_size、fastcgi_buffers、fastcgi_busy_buffers_size、fastcgi_temp_file_write_size、fastcgi_intercept_errors。特別是前三個超時時間。如果fastcgi緩衝區太小會導致fastcgi程序被掛起從而演變為504錯誤。

五. 小結

總而言之,502錯誤主要從四個方向入手:

max_children

request_terminate_timeout、max_execution_time

資料庫閘道器服務是否啟動如php-fpm

504錯誤主要檢視nginx.conf關於閘道器如fastcgi的配置。

Nginx 502錯誤排查及解決辦法

一些執行在nginx上的 有時候會出現 502 bad gateway 錯誤,有些時候甚至頻繁的出現。有些站長是在剛剛轉移到nginx之後就出現了這個問題,所以經常會懷疑這是不是nginx的問題,但事實上這是個誤區。nginx 502 bad gateway錯誤是fastcgi有問題,造成nginx...

Nginx 502 和504錯誤的解決方法

深入分析nginx 502 bad gateway和nginx 504 gateway time out及其解決 nginx 502 bad gateway的含義是請求的php cgi已經執行,但是由於某種原因 一般是讀取資源的問題 沒有執行完畢而導致php cgi程序終止。nginx 504 ga...

nginx 502 部分原因彙總(僅做參考)

1.listen.backlog 1 預設值 需將改為至少1024 2.pm dynamic 動態分配子程序 開啟動態之後 以下配置生效 pm.min spare servers 10 pm.max spare servers 500 允許最大子程序,可適當調大 3.pm.max requests ...