关于nginx proxy_next_upstream 重试 和 max_fails的那些事
背景及简要分析
前几天一次故障定位的时候发现,后端服务(java)在从故障中恢复之后,会出现大量499,且会持续较长时间无法自行恢复。
根本原因是服务容量问题,处理太慢导致客户端等不了了,主动断开。不过分析一下直接原因大概有这几点:
- nginx超时配置的比客户端长,导致客户端都499超时了,nginx还没超时。
- nginx的重试机制和max_fails机制配置不当,在一定程度上加剧了后端的恶性循环。
在学习了解了nginx相关机制、参数的时候,和同事在 proxy_next_upstream 和 max_fails 这两个参数之间产生了分歧。
- 从文档的这两句来看,我认为 max_fails 和 proxy_next_upstream 是强相关的,关闭了后者,前者会失效。
- 同事则认为,这两者无关,即使关掉了重试也不会影响fails摘节点。
各执己见的情况下,自然就是上配置测试了。
nginx相关配置、参数
proxy_next_upstream
max_fails
proxy_connect_timeout
Syntax: proxy_connect_timeout time;
Default: proxy_connect_timeout 60s;
Context: http, server, location
Defines a timeout for establishing a connection with a proxied server. It should be noted that this timeout cannot usually exceed 75 seconds.
http://nginx.org/en/docs/http...
本次的大量499问题就是这个连接超时配置不当的锅。
之前配置为3秒,也就是说如果一个上游服务有问题时,客户端必须等3秒以上。这还只是建立连接的时间。
从日志中推测,客户端的超时时间应该在3-6秒之间(应该是5s)【由于客户端不是app所以和一般的客户端超时不同】
nginx和服务如果都是内网的、同IDC,建立连接很快(ms级别),这个参数不必设置的太大。个人认为应该在500ms以下。当然,如果后端服务是外网的则另当别论了。
个人认为,服务端的超时时间应当是比客户端短的,这样在服务端某个节点有问题的时候,nginx还有时间去重试下一台。
proxy_[send/read]_timeout
测试过程
nginx版本: tengin 2.2.0
nginx参数:
关于nginx proxy_next_upstream 重试 和 max_fails的那些事的更多相关文章
- nginx的重试机制以及nginx常用的超时配置说明
nginx的重试机制 现在对外服务的网站,很少只使用一个服务节点,而是部署多台服务器,上层通过一定机制保证容错和负载均衡. nginx就是常用的一种HTTP和反向代理服务器,支持容错和负载均衡. ng ...
- nginx proxy_next_upstream 与openresty balancer.set_more_tries的使用
背景 我们这边网关服务使用的 kong,前段时间上线一个服务,这个服务它报错了,产生了502的错误码,追查这个报错的时候发现了网关服务的两个可疑的地方,第一个疑点是我们在Kong上配置的 Retrie ...
- Nginx负载均衡的max_fails和fail_timeout的默认配置问题
今天发现一个奇怪的现象,前端请求后端服务多次后会超时一次,经过多次验证确定是大概10s左右就会超时一次,检查后端服务,发现其中一个节点已经夯死. 但是我们的nginx负载均衡策略是轮询机制,按照配置来 ...
- Nginx负载均衡设置max_fails和fail_timeout
在Nginx的负载均衡检查模块中,对于负载均衡的节点可以配置如下可选参数: max_fails=1 fail_timeout=10s 这个是Nginx在负载均衡功能中,用于判断后端节点状态,所用到两个 ...
- nginx动态配置及服务发现那些事
Reference: http://xiaorui.cc/2016/10/16/nginx%E5%8A%A8%E6%80%81%E9%85%8D%E7%BD%AE%E5%8F%8A%E6%9C%8D% ...
- [转]nginx启动期都做了哪些事
nginx是个多进程web容器,不同的配置下它的启动方式也是不同的,这里我只说说最典型的启动方式. 它有1个master进程,和多个worker进程(最优配置的数量与CPU核数相关).那么,首先我们要 ...
- 用Kubernetes部署Springboot或Nginx,也就一个文件的事
1 前言 经过<Maven一键部署Springboot到Docker仓库,为自动化做准备>,Springboot的Docker镜像已经准备好,也能在Docker上成功运行了,是时候放上Ku ...
- nginx重试机制proxy_next_upstream
nginx作为反向代理服务器,后端RS有多台服务器,上层通过一定机制保证容错和负载均衡. nginx的重试机制就是容错的一种 官方链接:http://nginx.org/en/docs/http/ng ...
- 【从单体架构到分布式架构】(三)请求增多,单点变集群(2):Nginx
上一个章节,我们学习了负载均衡的理论知识,那么是不是把应用部署多套,前面挂一个负载均衡的软件或硬件就可以应对高并发了?其实还有很多问题需要考虑.比如: 1. 当一台服务器挂掉,请求如何转发到其他正常的 ...
随机推荐
- 万张PubFig人脸数据实现基于python+OpenCV的人脸特征定位程序(1)
在最近刷今日头条以及其他媒体软件时,经常会发现一些AI换脸的视频,于是我想,可不可以自己实现一个可以进行人脸识别的软件程序.我的具体流程是先配合python网络爬虫先进行万张PubFig人脸公共图片的 ...
- (原)pytorch中使用TensorRT
转载请注明出处: https://www.cnblogs.com/darkknightzh/p/11332155.html 代码网址: https://github.com/darkknightzh/ ...
- PS下修改背景色
1.打开要修改的图片 2.选择左侧的快速选择工具,右键选择魔法棒 3.在图片上点击左键选取背景 4.菜单栏选择编辑,点击填充 5.在填充选项框中选择“颜色",点击选取要使用的颜色,确定
- 【Appium】Android 按键码
keycode也是appium很强大的功能,鉴于官网不翻墙无法打开,特此备忘. 电话键 KEYCODE_CALL 拨号键 5 KEYCODE_ENDCALL 挂机键 6 KEYCODE_HOM ...
- 记录OKR在小公司实施的一次经历
00 前言 前段时间看了本书叫<OKR工作法>,顺便了解了一下OKR的相关知识,感觉这个起源于英特尔公司的东西,正是为那种小而美的团队准备的好东东.如果你还不知道什么是OKR,那我给你个传 ...
- 201671010447 杨露露 实验十四 团队项目评审&课程学习总结
项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 总结这学期软件工程学习获得 一 ...
- IE6兼容性bug汇总
1.终极方法:条件注释 <!--[if lte IE 6]> 这段文字仅显示在 IE6及IE6以下版本. <![endif]--> <!--[if gte IE 6]&g ...
- logging.basicConfig配置文件
import sys, logging logging.basicConfig(level=logging.INFO, # 日志等级 # filename: 指定日志文件名 format='level ...
- A Comparison of Serverless Frameworks for Kubernetes: OpenFaas, OpenWhisk, Fission, Kubeless and more
The term Serverless has become synonymous with AWS Lambda. Decoupling from AWS has two benefits; it ...
- JDOJ 1606 数字三角形
JDOJ 1606: 数字三角形 JDOJ传送门 Description 输入n,输出n的数字三角形 见样例 Input n Output n的数字三角形 Sample Input 4 Sample ...