线上状态码引发 bug 后的一些总结

    公司最近出了个很严重的事故,不是bug,网关层返回给用户一些502 错误,导致被客户投诉。于是总结下。

    该文章后续仍在不断的更新修改中, 请移步到原文地址http://dmwan.cc

    公司有个业务网关是openresty,后面负载均衡给一些php 进程,然后客户请求增多后,网关报了502给客户。这个事情,很严重。这里主要分析两个事情,一个是502 的原因,一个是如何解决这个事情。这里报502给客户是绝对不能允许的!

    首先,502 的原因。nginx 在upstream 情况下,分两种,一种是tcp 建联成功,一种是http建联成功。当tcp建联失败或者当下游服务器繁忙,http 建联失败,这种情况nginx 会直接返回状态码502给客户端。情况就是后端负载太高,扛不住。

    然后,我们需要的是解决502的问题,直接后端加机器呗?但是这里要更深入下,怎么防止502状态码回传客户,或者说,这些失败的请求能否重新执行,其实是可以的!

    有几种做法:

    第一种,客户限频,超频的请求,直接返回503。对客户限频是正常的做法。设置模块ngx_http_limit_req_module,从来源上限制。

    第二种,拦截error,重定向另外一台机器。注意报警,防止雪崩!这里使用proxy_next_upstream 参数就可以。可以设置的参数:

    第三种,拦截error,重定向错误页面,或者返回503,告知客户已经超频。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值