日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Nginx 504 Gateway Time-out的兩種最新解決方案

瀏覽:354日期:2023-03-13 15:37:39
目錄
  • 背景:
  • 問題:
  • 504從哪來:本文的場景下504是nginx返回的。
  • 兩種解決方案
  • 其他問題:
  • 總結(jié)

背景:

Nginx做反向代理,springboot為后端服務(wù)。

問題:

通過瀏覽器向后臺發(fā)起請求夠,由于后臺處理時間長,出現(xiàn)504 Gateway Time-out,實際后臺程序依然在執(zhí)行。如何解決?

504從哪來:本文的場景下504是nginx返回的。

nginx配置中控制該超時時間的屬性:

Syntax:proxy_read_timeout time;Default:
proxy_read_timeout 60s;
Context:http, server, location

官方地址:Module ngx_http_proxy_module (nginx.org)

官方描述如下:Defines a timeout for reading a response from the proxied server. The timeout is set only between two successive read operations, not for the transmission of the whole response. If the proxied server does not transmit anything within this time, the connection is closed.

一個請求有三方參與:瀏覽器,nginx,后臺服務(wù)器。

504的錯誤碼是有nginx返回的。結(jié)合官網(wǎng)的解釋,我們可以得出結(jié)論:

當nginx與后臺的鏈接兩次讀取有效數(shù)據(jù)之間超過配置的時間時,就會產(chǎn)生504超時。nginx會主動關(guān)閉與后臺服務(wù)器的鏈接。注意是兩次成功讀取的間隔,不是整個reponse的時間。

默認情況下proxy_read_timeout時60s。

如果你百度或google,通常解決方式有兩種:提高后臺處理效率增大proxy_read_timeout

增大方法很簡單,proxy_read_timeout  [你期望的時間]。

But,后臺效率提升總是有極限的。而proxy_read_timeout是固定值。總會有些正常業(yè)務(wù)場景,超過了設(shè)置的timeout值。

兩種解決方案

本人解決的問題:上傳excel文件后,由于文件大小無法預(yù)計,所以后臺處理時間也無法預(yù)計。同時還要支持大文件的上傳。上傳后由后臺解析處理。post請求,返回的是json。

一,關(guān)閉read-timout,可以實現(xiàn),但是生產(chǎn)環(huán)境下你敢不設(shè)置超時時間么?所以不建議。

二,既然nginx只要從reponse成功讀取數(shù)據(jù)兩次的間隔在proxy_read_timeout設(shè)置的時間內(nèi),就不會超時。那么我們是不是可以通過持續(xù)的向response中寫入數(shù)據(jù)來保證不超時呢。

答案是肯定的。

想通了這一點,實現(xiàn)就十分簡單。

1,正常上傳文件。

2,新建一個線程。持有response的引用,含有標志位,滿足條件時循環(huán)執(zhí)行,程序開始處理數(shù)據(jù)前,啟動線程。

3,線程的功能只有一個,以固定間隔向response中寫入數(shù)據(jù)。使nginx與后臺鏈接不超時。

4,這里就需要注意,我的方法是返回json,同時要持續(xù)向response寫入數(shù)據(jù),所以我手動拼裝json字符串。相當于在之前返回的json中增加一個屬性,名稱隨意,我的叫pending,值隨意,非空即可。我是用英文半角的句號" . "。

5,數(shù)據(jù)處理完后,回調(diào)線程的stop方法,終止線程中的循環(huán)。

注意:如有雷同純屬巧合。如果已經(jīng)有大佬講過這種解決方式,請艾特我,我立即刪除本文。

保持線程代碼如下:

#上下文代碼
//獲取鮮橙池executor,具體方式看個人。不會的直接百度,有很多
response.setContentType(ContentType.APPLICATION_JSON.getMimeType());
ResponseKeeper responseKeeper = new ResponseKeeper(response);
executorService.execute(responseKeeper);
#上下文代碼
 
 
public class ResponseKeeper implements Runnable {
 
/**
* 循環(huán)標志:true時停止循環(huán),終止線程
*/
private boolean done = false;

private HttpServletResponse response;
 
public void stop(){
    done = true;
}
 
public ResponseKeeper(HttpServletResponse response) {
    this.response = response;
}
 
@Override
public void run() {
    try {
response.getWriter().write("{\"pending\":\"");
while(!done){
    response.getWriter().write(".");
    response.getWriter().flush();
    LOGGER.error("flush-{}", System.currentTimeMillis());
    Thread.sleep(1000);
}
response.getWriter().write("\", \"status\": \"0\", \"msg\":\"success\"}");
    } catch (Exception e) {
e.printStackTrace();
    }
}
    }

其他問題:

如果你遇到異常

IllegalStateException – if the getOutputStream method has already been called for this response object

那就說明你的程序中有地方調(diào)用過了,response.getOutputStream();

只需要與已有程序保持一致使用outputStream即可。

即將response.getWriter() 提換成 response.getOutputStream();

原因簡單來講就是這兩個方法互斥。調(diào)用了一個就不能調(diào)用另一個。

總結(jié)

到此這篇關(guān)于Nginx 504 Gateway Time-out的兩種解決方案的文章就介紹到這了,更多相關(guān)Nginx 504 Gateway Time-out內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標簽: Nginx
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美久久久| 国产精品美女午夜爽爽| 免费日韩视频| 欧美日韩视频一区二区三区| 蜜臀国产一区二区三区在线播放| 久久国产日韩欧美精品| 亚洲成人一区| 精品久久久中文字幕| 国产精品极品国产中出| 国产福利一区二区三区在线播放| 久久99偷拍| 精品深夜福利视频| 日韩一区亚洲二区| 久久精品电影| 欧美在线网站| 欧美日韩国产在线观看网站 | 久久精品欧洲| 日韩免费在线| 在线亚洲观看| 日韩精品亚洲一区二区三区免费| 91精品国产自产观看在线| 国产欧美精品| 精品三级国产| 欧美片第1页| 91成人超碰| 日韩精品一二区| 国产欧美日韩在线一区二区| 久久精品女人| 亚洲五月婷婷| 亚洲伦乱视频| 免费av一区二区三区四区| 免费欧美日韩| 免费观看亚洲| 日本不卡一区二区| 视频一区在线播放| 日韩视频二区| 久久亚洲精品伦理| 国产精品原创| 五月激情久久| 99国产精品| 综合激情一区| 麻豆视频一区| 欧美精品激情| 久久99青青| 在线视频精品| 精品久久不卡| 久久不射网站| 精品久久在线| 亚洲午夜久久| 日韩深夜视频| 亚洲专区视频| 欧美亚洲日本精品| 蜜臀av在线播放一区二区三区| 国产日韩高清一区二区三区在线 | 欧美在线资源| 国产精品一区二区中文字幕| 日韩精品一区二区三区免费观看| 亚洲精品国模| 久久婷婷一区| 国产日韩一区| 婷婷亚洲综合| 婷婷精品在线观看| 亚洲成人精品| 日韩电影免费网站| 视频一区国产视频| 日韩视频二区| 日韩福利视频网| 97精品一区| 国产精品试看| 国产精品久久久一区二区| 日韩视频1区| 999精品色在线播放| 亚洲精品影视| 亚洲精品2区| 久久精品二区亚洲w码| 日av在线不卡| 亚洲爱爱视频| 国产精品成人3p一区二区三区| 欧美二区视频| 欧美在线看片| 美女久久网站| 成人自拍av| 97精品国产| 久久中文字幕一区二区| 日本一区二区三区中文字幕| 91成人精品| 深夜视频一区二区| 精品一区二区三区视频在线播放| 亚洲人成网77777色在线播放| 激情久久久久久| 国产成人精品一区二区三区免费 | 日韩超碰人人爽人人做人人添| 久久人人97超碰国产公开结果| 国产精品亚洲成在人线| 亚洲精品乱码| 免费在线观看日韩欧美| 国产一区日韩欧美| 亚洲成人av观看| 超碰99在线| 美女视频黄免费的久久| 91九色综合| 日韩欧美中文字幕在线视频| 日韩午夜精品| 1000部精品久久久久久久久| 日韩欧美午夜| 国产精品精品| 欧美激情精品| 日韩高清不卡在线| 亚洲精品伊人| 日韩中文一区二区| 综合欧美精品| 综合亚洲自拍| 五月国产精品| 日本不卡不码高清免费观看| 爽爽淫人综合网网站| 夜夜嗨网站十八久久| 精品日韩毛片| 国产中文一区| 999精品一区| 久久裸体视频| 激情丁香综合| 日韩午夜免费| 欧美a级片一区| 日韩电影免费在线观看| 亚洲精品成人图区| 综合日韩av| 欧美天堂视频| 视频一区中文| 日韩中文字幕不卡| 蜜臀av性久久久久蜜臀aⅴ四虎| 四虎成人精品一区二区免费网站 | 日韩精品一级二级| 亚洲乱码一区| 91欧美极品| 国产精品高清一区二区| 日韩精彩视频在线观看| 日韩精彩视频在线观看| 青草国产精品| 国产经典一区| 国产成年精品| 亚洲v在线看| 性一交一乱一区二区洋洋av| 美女精品网站| 欧美亚洲网站| 欧美极品一区二区三区| 精品免费视频| 99久久九九| 日韩中文字幕区一区有砖一区 | 欧美日韩夜夜| 国产精品一区二区三区www| 麻豆高清免费国产一区| 国产精品美女午夜爽爽| 天堂中文在线播放| 99热精品在线| 日本成人在线视频网站| 美女视频网站久久| 久久久国产亚洲精品| 免费视频国产一区| 免费在线小视频| 亚洲综合二区| 国产亚洲欧美日韩精品一区二区三区 | 国产日韩免费| 超碰在线99| 一本色道精品久久一区二区三区| 亚洲精品日本| 精品视频在线观看网站| 久久精品国产大片免费观看| 日韩中文字幕麻豆| 欧美黄色一区| 亚洲高清激情| 国产亚洲欧美日韩精品一区二区三区 | 丝袜美腿一区二区三区| 欧美日本不卡高清| 亚洲v在线看| 亚洲精选91| 精品一区视频| 模特精品在线| 国产高清亚洲| 欧美69视频| 欧美亚洲免费| 欧美日韩尤物久久| 亚洲欧洲国产精品一区| 国产成人精品福利| 亚洲欧美日韩综合国产aⅴ| 国产欧美综合一区二区三区| 亚洲成人二区| 国产欧美一区二区三区精品观看 | av在线最新| 亚洲精品四区| 青青久久av| 国产精品尤物| 夜久久久久久| 精品一区二区三区亚洲| 亚洲专区一区| 水蜜桃精品av一区二区| 亚州欧美在线| 午夜国产一区二区| 久久久久久色| 久久精品av| 欧美亚洲国产日韩|