常見錯誤型別502與504

2022-07-26 18:12:11 字數 1313 閱讀 5218

1.狀態碼解釋

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

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

2.502原因分析

將請求提交給閘道器如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實現非同步操作的研究》。

3.504原因分析

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錯誤。

4. 小結

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

1. max_children

2. request_terminate_timeout、max_execution_time

3. 資料庫

4. 閘道器服務是否啟動如php-fpm

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

出處:

鏈結mysql 504 常見錯誤型別502與504

1.狀態碼解釋 502 bad gateway 作為閘道器或者 工作的伺服器嘗試執行請求時,從上游伺服器接收到無效的響應。504 gateway time out 作為閘道器或者 工作的伺服器嘗試執行請求時,未能及時從上游伺服器 uri標識出的伺服器,例如http ftp ldap 或者輔助伺服器 ...

Nginx中502和504錯誤詳解

在使用nginx時,經常會碰到502 bad gateway和504 gateway time out錯誤,下面以nginx php fpm來分析下這兩種常見錯誤的原因和解決方案。1.502 bad gateway錯誤 在php.ini和php fpm.conf中分別有這樣兩個配置項 max exe...

Nginx 中 502 和 504 錯誤詳解

在使用nginx時,經常會碰到 502 bad gateway 和 504 gateway time out 錯誤,下面以 nginx php fpm 來分析下這兩種常見錯誤的原因和解決方案。502 bad gateway 錯誤 在 php.ini 和 php fpm.conf 中分別有這樣兩個配置...