点赞
评论
收藏
分享
举报
max_fails和fail_timeout配置不合理,造成服务故障
发表于2020-05-28 10:30

浏览 6.3k

1、现象:

    1)通过NGINX访问ppm服务开始超时。

image.png

    2)不久大量服务开始报no live upstream,造成部分服务不可用,导致了业务影响。

image.png

2、解决过程:

    1) 查看路由控制台管理界面,发现NGINX中有ppm的服务被超时下架。

image.png

    2)重启超时被下架的ppm服务,重启nginx解决。

3、根源分析:

生产环境中,应用启动后,需要动态注册到路由nginx中。请求到达接入层nginx后,通过负载把请求发给路由层nginx,再根据路由规则,分发到docker资源池的不同服务实例。

1) 在本次故障中,因为路由层nginx调用后端ppm多次服务超时,因此路由把ppm的服务下架。

2) 下架后接入层nginx把访问ppm的请求转发给路由层nginx,导致请求失败。

3) 多次失败后接入层nginx把路由层nginx下架。

4) 在路由层所有nginx都下架后,访问其他服务也就没有可以访问的live upstream,从而导致了到其他服务实例访问都失败。

接入层nginx 访问后端的upstream通过两个参数来进行控制:max_fails, fail_timeout, 比如:max_fails=10, fail_timeout=5s,则认为5秒超时为1个失败,10次失败后则不再访问后端的该upstream。

因此为避免某个服务超时导致路由nginx被下架,需要对接入层nginx的这两个参数进行调整:

1) fail_timeout需要设置为 > 服务端应用的最大执行时间。

     2) 增大max_fails, 并对no live upstream进行监控告警。

image.png


已修改于2023-03-07 19:13
本作品系原创
创作不易,留下一份鼓励
陈友行

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(1)

按点赞数排序

按时间排序

实战经验分享,杠杠滴!👍🏻👍🏻
赞同

1

回复举报

发表于2020-05-28 15:37



回复0学0
回复
关于作者
陈友行
这家伙很懒还未留下介绍~
5
文章
0
问答
24
粉丝
相关文章
前言nginx系列之一:nginx入门nginx系列之二:配置文件解读nginx系列之三:日志配置nginx系列之四:web服务器nginx系列之五:负载均衡nginx系列之六:cache服务nginx系列之七:限流配置nginx系列之八:使用upsync模块实现负载均衡转自:在此感谢原博主的整理分享一、nginxaccess日志配置1.1access_log日志配置access_log用来定义日志级别,日志位置。语法如下:日志级别: debug>info>notice>warn>error>crit>alert>emerg语法格式:access_logpath[format[buffer=size][gzip[=level]][flush=time][if=condition]];access_logoff;默认值:access_loglogs/access.logcombined;作用域:http,server,location,ifinlocation,limit_except实例一:access
点赞 4
浏览 11.6k
摘要:在上周结束的NGINXSprint2.0大会上,NGINX总经理RobertWhiteley郑重宣布NGINX在未来一年对于开源社区的三项承诺:     承诺一:更多的开源投入、更多的社区互动     承诺二:继续创新数据平面及其他技术     承诺三:清晰定义开源和商业化的边界针对以上三项承诺,NGINX配以三条公告,更清晰地展现了NGINX将如何在开源世界中扮演更重要的角色:     公告一:为Kubernetes社区提供更多资源     公告二:在交付堆栈的每个层面建立新的开源项目     公告三:全新开源的现代应用参考架构(MARA)15年来,开源一直是NGINX工作的核心,未来也将继续是激励NGINX前行的不竭动力。在接下来的一年里,我们将采取重要措
点赞 1
浏览 5.4k
当 NGINX 在 2019 年加入 F5 时,我们知道这是一个强强联手的选择。NGINX App Protect 就是一个很好的证明,它将 F5 可信且性能强劲的 WAF 引擎整合到一个可以轻松部署在任何环境的轻量级解决方案中,在提供强大保护的同时不会增加延迟。
点赞 0
浏览 2.6k