Nginx 504 gateway timeout

news2024/11/28 14:14:26

方案

调整这几个参数来调大nginx的超时时间。

proxy_connect_timeout
proxy_send_timeout
proxy_read_timeout

nginx 三个代理超时时间配置

proxy_connect_timeout 60s;
Defines a timeout for establishing a connection with a proxied server. It should be noted that this timeout cannot usually exceed 75seconds.
定义与被代理服务器建立连接的超时时间。请注意,此超时通常不能超过75秒。
proxy_send_timeout dedault 60s
Sets a timeout for transmitting a request to the proxied server. The timeout is set only between two successive write operations, not for the transmission of the whole request. If the proxied server does not receive anything within this time, the connection is closed.
设置将请求传输到被代理服务器的超时时间。只在两个连续的写操作之间设置超时,而不是整个请求的传输。如果代理服务器在这段时间内没有收到数据,连接将被关闭。
proxy_read_timeout default 60s
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.
定义从被代理服务器读取响应的超时。超时设置仅在两个连续的读取操作之间,而不是整个响应的传输。如果代理服务器在这段时间内没有传输数据,连接将被关闭。

在这里插入图片描述

为什么不建议调大proxy_connect_timeout

  • 生产环境中nginx和后端服务器一般是走内网通讯,正常情况下建链时间本来就不应该太长
  • nginx开启的被动健康检查,过长的proxy_connect_timeout 会严重影响被动健康检查的效果

nginx的被动健康检查 (阅)

upstream upcheck { server 127.0.0.1:8000 max_fails=1 fail_timeout=10s ; } 这个一个默认的nginx被动健康检查的配置max_fails=1 fail_timeout=10s
这段的大致意思是10s内,这个节点的请求失败数超过1则会将其标记为down,下个10s内不会有新的请求到达该节点。详细的介绍大家可以去官网或者论坛去搜索,这里不再赘述。下面我着重讲一下proxy_conncet_timeout对他的影响。

被动健康检查一个常见的场景就是当后端有台服务器宕机的时候,如果proxy_connect_timeout
设置为5s,5s后nginx和后端建链超时,该条请求被标记为失败,该节点被置为down。这样可以在一定程度上做到快速止损。而假如我们将proxy_connect_timeout
设置为60s,所有到达该节点的请求60s后才会因为超时剔除宕机节点。

下面我做一个简单的实验来对比一下宕机情况下proxy_connect_timeout设置为5s和60s的区别

两组upstream都为2个节点,采用默认被动健康检查配置(max_fails=1
fail_timeout=10s),其中一个节点不可用(ping不通),关闭nginx重试,每秒请求一次,持续10分钟

nginx配置

server {
	listen 80;
	server_name _ ;
	access_log /opt/log/ngx-lan_access.log main;
	location = /upcheck {
    	proxy_next_upstream_tries 1;
		proxy_connect_timeout 5s;
		proxy_pass http://upcheck;
	} 
	location = /upcheck2 {
		proxy_next_upstream_tries 1;
		proxy_connect_timeout 60s;
		proxy_pass http://upcheck2;
	}
	upstream upcheck {
		server 127.0.0.1:8500 max_fails=1 fail_timeout=10s ;
		server 192.168.100.100:8500 max_fails=1 fail_timeout=10s ;
	}
	upstream upcheck2 {
    	server 127.0.0.1:8500 max_fails=1 fail_timeout=10s ;
    	server 192.168.100.100:8500 max_fails=1 fail_timeout=10s ;
	}
}

用curl访问

for i in {1..600}; do curl http://127.0.0.1/upcheck -I > /dev/null 2>&1  & sleep 1; done
for i in {1..600}; do curl http://127.0.0.1/upcheck2 -I > /dev/null 2>&1  & sleep 1; done

然后统计一下这两组配置的200状态码

5s的这组 200状态码个数是 558
60s的这组 200状态码个数是 468

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/620274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【期末划重点】计算机英语(2)(更新中)

阿金的计算机英语,线下考试版~ 时隔半年,又开始赌徒模式啦 这次尝试用大数据文本分析,精准备考 欢迎补充 2023计英期末考赌徒版 Part 1 词汇题(20题,40分)1、词库说明2、本题答题技巧3、背词方法4、完整词库…

【Python实战】Python采集情感音频

成年人的世界真不容易啊 总是悲伤大于欢喜 爱情因为懵懂而快乐 却走进了复杂和困惑的婚姻 前言 我最近喜欢去听情感类的节目,比如说,婚姻类,我可能老了吧。我就想着怎么把音乐下载下来了,保存到手机上,方便我们业余时…

jdk配置语句以及idea配置问题idea科学使用

一、第一步上链接 官网地址,不过每次都在变版本不过都一样没事: https://www.oracle.com/java/technologies/downloads/ idea2021官网 https://www.jetbrains.com/zh-cn/idea/download/other.html 你可以下载右边付费的版本,如果想下载左边…

IPO观察丨绿源持续推进IPO,这次不止“一部车能骑10年”

近期,国内两轮电动车行业又有新动态。业内老牌企业绿源集团更新招股书,继续推进上市进程,中信建投国际担任保荐人。 其实去年11月,绿源已向港交所递交招股书,只不过受若干原因影响,在今年5月失效。当然&am…

synchronized简单理解

一、简述 1.1 synchronized介绍 synchronized是一种互斥锁,也成为同步锁,它的作用是保证在同一时刻,被修饰的代码块或方法只会有一个线程执行,以到达保证并发安全效果。在JDK1.6以前,很多人称之为重量级锁&#xff0…

作为一名仓库管理人员,如何有效地管理仓库?

作为一名仓库管理人员,如何有效地管理仓库? 有效仓库管理主要可以分为四个方面: 出入库 库存调拨 库存盘点 虚拟库存/实际库存管理 当然仓库管理最基本的硬件条件还是需要准备好的,比如将仓库分一下区域,以便之后商…

layui(3)——内置模块弹出层

弹出层 1.基础参数 使用模块layer layui.use(layer, function(){var layer layui.layer;}); <script>layui.use(layer, function () {var layer layui.layer;layer.open({// layer提供了5种层类型。可传入的值有&#xff1a;0&#xff08;信息框&…

极简操作!跟着官方教程,下载并使用汉化版Figma!

随着云端协作设计工具的发展&#xff0c;Figma 作为一款基于云端的国外云端协作工具&#xff0c;尽管无需下载即可在线使用&#xff0c;但在国内却常常遇到加载缓慢、需要刷新重进的问题。此外&#xff0c;Figma 在实际使用过程中&#xff0c;常常需要搭配其他软件或第三方插件…

vue3+element plus,使用分页total修改成中文

vue3element plus&#xff0c;使用分页total修改成中文 使用element plus的分页功能 el-pagination 的时候&#xff0c;total属性显示是英文 这是我建的一个新项目&#xff0c;总数显示的Total 1000 我们的需求是显示中文&#xff0c;共 1000 条 这个就很尴尬&#xff0c;组件…

JAVA基础,区别于C++

JAVA 基础 1. 数据类型 字节型 byte 1 字节 -128~127 短整型 short 2 字节 -32768~32767 整型 int 4 字节 -2147483648~2147483647 长整型 long 8 字节 -9223372036854775808L~92…

初学Nginx要掌握哪些概念?

文章目录 为什么要使用Nginx&#xff1f;什么是Nginx&#xff1f;Nginx的作用&#xff1f;反向代理负载均衡动静分离 为什么要使用Nginx&#xff1f; 小公司项目刚刚上线的时候&#xff0c;并发量小&#xff0c;用户使用的少&#xff0c;所以在低并发的情况下&#xff0c;一个…

iNotes(WebMail)中的附件显示

大家好&#xff0c;才是真的好。 1995年Domino R4/4.5中加入了HTTP功能&#xff0c;从此便支持从用户从Web浏览器上查看邮件.一开始称之为Domino Web Access&#xff0c;后来更名为IBM Lotus iNotes&#xff0c;简称iNotes&#xff0c; 对于不熟悉Notes/Domino的人来说&#…

达梦数据库dblink测试(DM-ORACLE19c及DM8-DM8)

目录 DM与DM创建DBLINK. 3 一、配置203服务器... 3 1、主服务器203开启mal服务... 3 2、主服务器203配置dmmal.ini文件... 3 3、重启203数据库... 4 二、配置200服务器... 4 三、创建dblink. 4 DM与Oracle数据库创建dblink. 5 一、DM服务器&#xff1a;... 6 1、初始…

祝愿莘莘学子高考顺利!Good luck on your Gaokao!

《登科后》 唐孟郊 昔日龌龊不足夸&#xff0c;今朝放荡思无涯。 春风得意马蹄疾&#xff0c;一日看尽长安花。 Gone are all my past woes! What more have I to say? My body and my mind enjoy their fill today. Successful, faster runs my horse in vernal breeze;…

ArrayList 的底层原理和源码分析

tip&#xff1a;作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 推荐&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; 文章目录 一、简介二、…

Cookie Session

第一章 会话技术 1.1 什么是会话 web会话可简单理解为&#xff1a;用户开一个浏览器&#xff0c;访问某一个web网站&#xff0c;在这个网站点击多个超链接&#xff0c;访问服务器多个web资源&#xff0c;然后关闭浏览器&#xff0c;整个过程称之为一个会话. 它是指浏览器和服…

URL到页面: 探索网页加载的神秘过程

当我们从浏览器的地址栏输入 URL, 按下回车, 再到最后出现需要的网页界面, 这中间究竟发生了什么, 接下来就一步步进行解析. 主要是如下过程: 输入网址DNS 解析客户端发送 HTPP 请求建立 TCP 连接服务器处理请求, 计算响应, 返回响应浏览器渲染页面关闭连接 本篇中只是概述整…

AUTOSAR-OS的调度机制-调度表(没理解透,继续更新)

什么是调度表&#xff1a; 1. 调度表由一系列按时间先后顺序排序的终结点组成&#xff0c;其中每个终结点都有自己的任务&#xff0c;有的终结点可能是激活一系列的任务&#xff0c;有的是设置一系列的事件&#xff0c;还有的可能是既激活一系列的任务又设置一系列的事件。 调…

数据结构之庖丁解牛八大排序算法,附动图说明过程(上)

目录 一、排序的概念以及应用 二、常见排序算法的实现 1.插入排序 1.1直接插入排序 b.实现直接插入排序 1.2希尔排序&#xff08;缩小增量排序&#xff09; 2.选择排序 2.1直接选择排序 2.2堆排序 3.交换排序 3.1冒泡排序 一、排序的概念以及应用 1.排序的概念 所谓排序&#x…

Mysql数据库--修改root密码的几种方法(忘记密码知道密码)

Mysql数据库--修改root密码的几种方法&#xff08;忘记密码&知道密码&#xff09; &#x1f53b;一、知道密码情况--修改root密码⛳ 1.1 方式1&#xff1a;alter 命令修改⛳ 1.2 方式2&#xff1a;set password命令修改 &#x1f53b;二、忘记密码情况-修改root密码⛳ 2.1 …