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”錯誤,問題解決。