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

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

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

瀏覽:357日期: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é)論:

當(dāng)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是固定值??倳行┱I(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的引用,含有標(biāo)志位,滿足條件時循環(huán)執(zhí)行,程序開始處理數(shù)據(jù)前,啟動線程。

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

4,這里就需要注意,我的方法是返回json,同時要持續(xù)向response寫入數(shù)據(jù),所以我手動拼裝json字符串。相當(dāng)于在之前返回的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)標(biāo)志: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)文章希望大家以后多多支持!

標(biāo)簽: Nginx
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品日本视频| 久久国产精品亚洲77777| 日韩国产在线不卡视频| 免费观看在线综合色| 午夜性色一区二区三区免费视频| 蜜臀av一区二区三区| 亚洲欧美日韩专区| 在线精品亚洲| 久久国产免费看| 成人在线免费观看网站| 欧洲av不卡| 在线亚洲欧美| 在线精品福利| 国产欧美日韩在线观看视频| 欧美xxxx性| 久久精品亚洲人成影院| 99国产精品私拍| 亚洲精品乱码| 欧美国产日韩电影| 亚洲国产欧美日本视频| 蜜桃一区二区三区| 日韩免费精品| 国产欧美丝祙| 在线一区av| 久久国产精品久久久久久电车| 日韩国产欧美三级| 国产中文字幕一区二区三区| 欧美一区二区三区高清视频| 亚洲精品日本| 成人日韩av| 亚洲精品888| 欧美日韩亚洲一区三区| 精品亚洲成人| 91成人精品| 国产亚洲高清一区| 亚洲成人va| 日韩中文字幕一区二区高清99| 国产精品亚洲综合久久| 久久精品国产www456c0m| 91麻豆精品激情在线观看最新| 超碰在线99| 亚洲综合婷婷| 午夜av不卡| 日韩二区在线观看| 蜜桃精品在线| 日韩精品福利一区二区三区| а√天堂8资源在线| 在线国产日韩| 日韩免费福利视频| 日本久久一区| 亚洲二区视频| 国产精品啊v在线| jiujiure精品视频播放| 国产精品一区亚洲| 影音国产精品| 久久久久伊人| 日本欧洲一区二区| 韩日一区二区| 日韩精品一区二区三区免费视频| 欧洲在线一区| 国产精品s色| 视频一区在线视频| 国产v综合v| 蜜桃久久久久| 五月激激激综合网色播 | 久久久久久免费视频| 天堂精品久久久久| av亚洲免费| 日韩成人免费| 国产精品亚洲欧美日韩一区在线| 在线视频日韩| 日韩精品91| 欧美激情日韩| 日本免费一区二区视频| 国产一级久久| 亚洲网站视频| 国产成人免费精品| 国产亚洲欧美日韩精品一区二区三区| 亚洲精品极品少妇16p| 国产成人调教视频在线观看| 日韩午夜视频在线| 99国产精品久久久久久久| 黄毛片在线观看| 麻豆91精品视频| 91精品美女| 亚洲精品乱码久久久久久蜜桃麻豆| 图片区亚洲欧美小说区| 91精品韩国| 日韩成人精品一区| 久久wwww| 国产欧美综合一区二区三区| 亚洲天堂av资源在线观看| 伊人久久成人| 午夜欧美在线| av亚洲免费| 欧美.日韩.国产.一区.二区| 国产 日韩 欧美 综合 一区| 九九九精品视频| 免费视频一区二区三区在线观看 | 久久精品二区三区| 国产精品99在线观看| 久久中文字幕一区二区| 国产精品亲子伦av一区二区三区| 日本亚洲不卡| 日韩一区二区三区四区五区| 在线国产一区二区| 久久久久国产精品一区三寸| www.51av欧美视频| 日本一区二区免费高清| 精品精品国产三级a∨在线| 久久av免费看| 麻豆精品久久| 精品久久久网| 樱桃视频成人在线观看| 蜜桃av在线播放| 99久久99视频只有精品| 国精品一区二区| 自由日本语亚洲人高潮| 午夜国产一区二区| 最新日韩欧美| 在线综合视频| 亚洲综合精品| 蜜臀久久99精品久久久画质超高清| 久久成人国产| 亚洲日本久久| 91成人精品在线| 国产精品对白| 91偷拍一区二区三区精品| 蜜桃精品在线| 伊人久久成人| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲免费福利| 美女网站视频一区| 不卡一区2区| 视频一区视频二区中文字幕| 亚洲精品第一| 免费日韩一区二区三区| 手机在线电影一区| 国产精品一区二区美女视频免费看| 日本va欧美va瓶| 国产极品模特精品一二| 精品国产精品久久一区免费式| 国产成人精品一区二区免费看京| 美女高潮久久久| 国产亚洲一区在线| 亚洲毛片一区| 中文字幕成在线观看| 免费在线看一区| 精品免费视频| 亚洲视频电影在线| 国内精品美女在线观看| 亚州av一区| 老司机免费视频一区二区| 天堂va欧美ⅴa亚洲va一国产| 在线精品福利| 人在线成免费视频| 亚洲香蕉视频| 97精品视频在线看| 欧美精品二区| 精品美女在线视频| 日韩电影免费网址| 午夜日韩福利| 国产日韩欧美一区在线| 亚洲综合电影| 亚洲中午字幕| 国产精品4hu.www| 欧美日韩在线二区| 亚洲精品在线a| 国产一区二区三区视频在线| 久久国产主播| 日本成人一区二区| 亚洲天堂资源| 亚洲精品四区| 天堂√中文最新版在线| 亚洲在线久久| 美日韩一区二区三区| 夜夜嗨一区二区| 久久婷婷av| 久久一区二区三区喷水| 老色鬼精品视频在线观看播放| 清纯唯美亚洲综合一区| 日韩欧美中文在线观看| 久久亚洲图片| 日本久久一区| 国产精品男女| 麻豆一区二区在线| 久久久久久一区二区| 日韩电影在线视频| 99久久精品国产亚洲精品| 91综合视频| 精品中文字幕一区二区三区四区| 国产欧美日韩精品一区二区免费 | 久久久久久久久成人| 美女久久网站| 久久久久久免费视频| 亚洲网站视频| 国产精品二区影院| 另类激情亚洲| 久久尤物视频| 日韩一区二区三区免费视频|