问题一 客户端超时主动断开连接 nginx 499 导致客户端接受到服务超时的返回。报错预警突增
原因:客户端超时时间比代理服务(backend配置超时)超时时间小,代理的后端服务超时导致调用方大量的请求报错。
排查过程如下
1、 查看apierror.log(这里会记录验证错误的异常) 对比报错陡增前后 apierror中针对具体接口的报错量是否平稳。
本次发现报错前后apierror中报错量并没有大幅变化,这个问题与验证无关。
2、 查看backend.log 发现访问后端没有4XX, 5XX的错误返回。
3、 查看.api.weibo.com/proxy/badges/badge.json 的调用正常的qps,发现抖降300,与报错的增量吻合。
说明是我们这里吃掉了300/s 的请求。产生问题。
4、 apierror、access.log、backend.log无明显异常。
可以在监控中查看后端的返回平均时间是否有突增。
联系运维查看ng的log是否出现499。确定客户端指定的超时时间 确定问题。 联系后端接口负责人解决。
5、 本次排查后加入log
问题二
接口偶发返回时间过长
1、客户端配置超时时间8s,反馈偶发返回时间6s
2、查询log没有明显报错
3、查看nginx的log 发现有返回为空 ngx状态502
4、nginx 轮训三台机器前两台502,耗时6s
5、初步怀疑,是底层接口超时, 关闭了channl连接,并且没有打印backend超时log()
6、连接关闭,导致程序没有返回。接口等待服务全局的6s超时后返回空,导致nginx 502
7、 加入log,灰度,确认现象。
8、 调整backend超时时间,通知后端优化接口。
9、 ProxyIdleStateHandler 超时后不hander会处理, 超时不会走messageReceived , 走channelIdle 开始没有打印log。
广告: 有喜欢钢琴的同学可以关注