Nginx 504 Gateway Time-out/xxxx方法

注:除了f12,日志等。不要相信任何弹窗。。
问题描述:接到用户反馈,弹窗提示文件导入失败
解决途径:
1、拿到用户账号密码及相关excel后,还原业务操作,f12发现报错信息504 Gateway Time-out/xxxx
2、nginx504超时,查看tomcat日志,根据业务定位日志
业务开始:


Snipaste_2021-04-25_17-04-28.png

业务结束:


Snipaste_2021-04-25_17-06-11.png

所用时间:大约为2min

3、查看nginx默认超时时间
proxy_connect_timeout
语法: proxy_connect_timeout timeout_in_seconds
上下文: http, server, location
This directive assigns a timeout for the connection to the proxyserver. This is not the time until the server returns the pages, this is the [#proxy_read_timeout proxy_read_timeout] statement. If your proxyserver is up, but hanging (e.g. it does not have enough threads to process your request so it puts you in the pool of connections to deal with later), then this statement will not help as the connection to the server has been made. It is necessary to keep in mind that this time out cannot be more than 75 seconds.
该指令为到 代理服务器的连接分配一个超时。这不是服务器返回页面的时间。如果 代理服务器 已经启动,但是挂起了(例如,它没有足够的线程来处理您的请求,因此它将您放在连接池中,以便以后处理) ,那么这条语句将不会有任何帮助,因为已经建立了与服务器的连接。有必要记住,这个超时时间不能超过75秒。
注:这个应该是建立三次握手连接时间,设置不能超过75S

proxy_send_timeout
语法: proxy_send_timeout time_in_seconds
默认值: proxy_send_timeout 60
上下文: http, server, location
This directive assigns timeout with the transfer of request to the proxy server. Time out is established not on entire transfer of request, but only between two operations of record. If after this time the proxy server will not take new data, then nginx is shut the connection
个人理解:有错请指出。
该指令通过向代理服务器传输请求来分配超时时间。超时不是在整个请求传输上建立的,而是仅在两个请求操作之间建立的。如果在此之后代理服务器将不接受新数据,那么 nginx 将关闭连接。(比如文件上传,60s内没把数据传给upstram)

proxy_read_timeout
语法: proxy_read_timeout the_time
默认值: proxy_read_timeout 60
上下文: http, server, location
This directive sets the read timeout for the response of the proxied server. It determines how long NGINX will wait to get the response to a request. The timeout is established not for entire response, but only between two operations of reading.
In contrast to [#proxy_connect_timeout proxy_connect_timeout] , this timeout will catch a server that puts you in it's connection pool but does not respond to you with anything beyond that. Be careful though not to set this too low, as your proxyserver might take a longer time to respond to requests on purpose (e.g. when serving you a report page that takes some time to compute). You are able though to have a different setting per location, which enables you to have a higher proxy_read_timeout for the report page's location.
If the proxied server nothing will communicate after this time, then nginx is shut connection.
此指令设置代理服务器响应的读取超时。它确定 NGINX 将等待多长时间才能得到请求的响应。超时不是针对整个响应设置的,而是仅在两个读取操作之间设置的。
与[ # proxy connect timeout proxy proxy connect timeout ]相反,这个超时将捕获一个服务器,它将把你放入它的连接池,但除此之外不会对你做出任何响应。不过要小心,不要设置得太低,因为 proxyserver 可能需要更长的时间故意响应请求(例如,当为您提供一个需要花费一些时间进行计算的报告页面时)。不过,您可以为每个位置设置一个不同的设置,这样就可以为报表页面的位置设置更高的代理读取超时。
如果被代理的服务器在这个时间之后没有任何东西进行通信,那么 nginx 关闭连接。60s内没从upstream读到任何数据。两台负载情况下,默认容错机制表现给浏览器就是120s返回504。只针对GET生效,针对POST请求,需要增加 non_idempotent

容错参数:
句法: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off ...;
默认:
proxy_next_upstream 错误超时;
语境: http, server,location
指定在哪些情况下应将请求传递到下一个服务器:

error
与服务器建立连接、向其传递请求或读取响应头时发生错误;
timeout
与服务器建立连接、向其传递请求或读取响应标头时发生超时;
invalid_header
服务器返回空或无效的响应;
http_500
服务器返回代码为 500 的响应;
http_502
服务器返回代码为 502 的响应;
http_503
服务器返回代码为 503 的响应;
http_504
服务器返回代码为 504 的响应;
http_403
服务器返回代码为 403 的响应;
http_404
服务器返回代码为 404 的响应;
http_429
服务器返回代码为 429 (1.11.13) 的响应;
non_idempotent
通常,如果请求已发送到上游服务器 (1.9.13) ,则使用 非幂等 方法 ( POST, LOCK, PATCH) 的请求不会传递到下一个服务器;显式启用此选项允许重试此类请求;
off
禁止将请求传递到下一个服务器。
应该记住,只有在尚未向客户端发送任何内容的情况下,才能将请求传递到下一个服务器。也就是说,如果在传输响应的过程中发生错误或超时,则无法修复此问题。

该指令还定义了与服务器通信的 失败尝试。的情况下error,timeout并 invalid_header始终被认为不成功的尝试,即使在该指令中没有指定他们。的情况下http_500,http_502, http_503,http_504,和http_429被认为只有当他们在该指令中指定不成功的尝试。的情况下,http_403和http_404 永远不会被视为不成功的尝试。

将请求传递到下一个服务器可能会受到 尝试次数 和时间的限制。

句法: proxy_next_upstream_timeout time;
默认:
proxy_next_upstream_timeout 0;
语境: http, server,location
该指令出现在 1.7.5 版中。

限制请求可以传递到 下一个服务器的时间。该0值关闭此限制。

句法: proxy_next_upstream_tries number;
默认:
proxy_next_upstream_tries 0;
语境: http, server,location
该指令出现在 1.7.5 版中。

限制将请求传递到下一个服务器的可能尝试次数 。该0值关闭此限制。

2min是超过了默认60s的,所以会报504

根据业务量设置:

相关upstream配置
proxy_send_timeout 500;
proxy_read_timeout 480;

nginx中文文档:
1、https://www.nginx.cn/doc/
2、https://www.nginx.cn/nginx-how-to
nginx官网文档:
1、http://nginx.org/en/docs/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容