生产网站502 bad gateway nginx

Nginx错误日志:no live upstreams while connecting to upstream xxx;

问题和现象:
近期有业务方反馈业务接口请求偶尔会返回502现象;
查看access.log日志中502请求个数:
全部接口统计过去一天502请求个数:7692,请求总数:376,178,782,502概率:0.002%;
查看nginx中的错误日志:nginx_log/error.log 搜关键词“no live upstreams”
发现类似报错:no live upstreams while connecting to upstream, client: xxxx, server:

问题分析:

根据超时接口名abc_service,找到对应的location,或者直接在nginx.conf中搜索关键词“proxy_read_timeout 800ms”;

通过该location下面的proxy_pass 找到对应的upstream;查看该upstream下面的server节点数和失败配置,默认配置为:max_fails=1 fail_timeout=10s

由于abc_service接口本身大于800ms超时请求较多,达到默认失败1次后,该server节点10s内不接受请求;当唯二的两个server都失败时,nginx进行quick recovery,把每个节点的失败次数都重置为0,然后再返回一个NGX_BUSY,然后nginx就会打印一条no live upstreams ,最后又回到原始状态,接着进行转发了;

这2个server节点由于abc_service单独的超时时间配置触发了server节点失败阈值,导致该server节点下线,当两个节点都下线时,触发一次no live upstream,同时返回给客户端502;
问题解决:
优化nginx节点超时接口对应的upstream下的server节点参数,server xx:8888 max_fails=10 fail_timeout=1s;
参数解释:该节点触发10次失败时,暂停服务1s;由于abc_service接口本身800ms超时算一次失败,所以避免了由个别接口超时导致的server节点下线;只有当这两个server节点本身不可用时,才会触发502;
原文

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值