nginx 出現504 Gateway Time-out的解決方法

本文介紹nginx出現504 Gateway Time-out問題的原因,分析問題並提供解決方法。

1.問題分析

nginx訪問出現504 Gateway Time-out,一般是由於程序執行時間過長導致響應超時,例如程序需要執行90秒,而nginx最大響應等待時間爲30秒,這樣就會出現超時。
 
通常有以下幾種情況導致

1.程序在處理大量數據,導致等待超時。
2.程序中調用外部請求,而外部請求響應超時。
3.連接數據庫失敗而沒有停止,死循環重新連。

出現這種情況,我們可以先優化程序,縮短執行時間。另一方面,可以調大nginx超時限制的參數,使程序可以正常執行。

對於訪問超時的設定,nginx與php都有相關的設置,可以逐一進行修改。


2.解決方法

nginx配置

nginx.conf中,設置以下幾個參數,增加超時時間

fastcgi_connect_timeout
fastcgi連接超時時間,默認60秒

fastcgi_send_timeout
nginx 進程向 fastcgi 進程發送請求過程的超時時間,默認值60秒

fastcgi_read_timeout
fastcgi 進程向 nginx 進程發送輸出過程的超時時間,默認值60秒


php配置

php.ini

max_execution_time
php腳本最大執行時間
 
php-fpm

request_terminate_timeout
設置單個請求的超時時間

 
php程序中可加入set_time_limit(seconds)設置最長執行時間

例如 set_time_limit(0) 表示不超時。

發佈了306 篇原創文章 · 獲贊 665 · 訪問量 974萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章