記一次對接第三方數據傳輸nginx出現“504 Gateway Time-out”的解決方法

業務場景:第三發團隊直接將數據通過http請求將數據通過接口傳給我們,然後我們再進行入庫。項目涉及到大量圖片信息,不僅要去第三方fastDFS服務器上下載圖片還有對圖片進行ocr識別導致圖片數據量很大時,會報錯504服務相應超時。項目中使用了nginx,所以這裏解決超時問題要修改nginx配置文件。

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

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

出現這種情況,要麼優化程序,縮短執行時間。另一方面,可以調大nginx超時限制的參數,使程序可以正常執行。項目實際場景中主要涉及到圖片的下載以後對圖片進行ocr識別數據量比較大,優化代碼空間可能不是很大。所以選擇將時間調大處理。
 

解決辦法:這裏對nginx.conf文件進行修改。如下

    #默認的fastcgi進程響應的緩衝區是8K,設置成128k
    fastcgi_buffers 8 128k;    


    #指定nginx與後端fastcgi server連接超時時間,而fastcgi連接超時時間,默認60秒
    fastcgi_connect_timeout 1800s;


    #指定nginx向後端傳送請求超時時間(指已完成兩次握手後向fastcgi傳送請求超時時間),默認值60秒
    fastcgi_send_timeout 1800s;


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

 

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