HTTP 504 - Gateway Timeout 閘道器超時
阿新 • • 發佈:2021-10-22
HTTP 504 - Gateway Timeout 閘道器超時
- 錯誤說明:閘道器超時,伺服器響應時間,達到超出設定的範圍
- 原因1:後端電腦之間 IP 通訊緩慢而產生
- 解決辦法:
- 如果您的 Web 伺服器由某一網站託管, 只有負責那個網站設定的人員才能解決這個問題。
- 原因2:由於nginx預設的fastcgi程序響應的緩衝區太小造成的錯誤
- 解決辦法:
- 一般預設的fastcgi程序響應的緩衝區是8K,這時可以設定大一點,在nginx.conf裡,加入:fastcgi_buffers 8 128k這表示設定fastcgi緩衝區為8塊128k大小的空間。當然如果在進行某一項即時的操作, 可能需要nginx的超時引數調大點, 例如設定成60秒:send_timeout 60;經過這兩個引數的調整,一般不會再提示“504 Gateway Time-out”錯誤,問題基本解決。
- 原因3:PHP環境的配置問題
- 解決辦法:
- 更改php-fpm的幾處配置: 把max_children由之前的10改為現在的30,這樣就可以保證有充足的php-cgi程序可以被使用; 把request_terminate_timeout由之前的0s改為60s,這樣php-cgi程序 處理指令碼的超時時間就是60秒,可以防止程序都被掛起,提高利用效率。 接著再更改nginx的幾個配置項,減少FastCGI的請求次數,儘量維持buffers不變: fastcgi_buffers由 4 64k 改為 2 256k; fastcgi_buffer_size 由 64k 改為 128K; fastcgi_busy_buffers_size 由 128K 改為 256K; fastcgi_temp_file_write_size 由 128K 改為 256K。 重新載入php-fpm和nginx的配置,再次測試,如果沒有出現“504 Gateway Time-out”錯誤,問題解決。