记一次接口突然响应很慢的排查经历

项目背景:微信小程序获取uinonid,通过第三方获取积分等信息(相关的一个小部分其他不谈)

一进入小程序就一直菊花乱转,看了下报文是一直没返回东西给前端的

于是先从nginx access_log入手   发现除了499就是200  没什么异常 没看过499于是从499入手

查了一下发现是用户主动断开连接   后面发现只要后端还未返回东西给前端只要主动刷新页面就会出现499 中断此次连接

如图所示  红圈框住的还没接收到返回 就被刷新了页面 nginx acess_log 就会记录为499了

于是乎我们可以排除是这个问题了 此时怀疑起了是不是第三方返回太慢导致我们的php-fpm(curl设置了25s断连 因为第三方的接口太坑爹了) 不够用排队等处理 所以接口响应就很慢 (其实一开始是排除这个的,以为不够用是汇报502的)

于是拿自己的服务器模拟了这种操作  a服务器curl调用b服务器接口(模拟线上服务器)  b服务器接口sleep 20s(模拟第三方处理很慢)(两台服务器 php-fpm配置都是动态最大30)

然后调用a服务器接口一直刷了五十次   然后再开一个页面请求a服务器另一个接口  结果是请求a服务器另一个接口的页面也响应很慢  和一开始的场景一致 

找到原因了  继续验证  查看很慢那段时间访问第三方的日志(这个日志是为了方便自己debug打的  大概接口如图)

很多都超过了25S导致自动断开连接 没有拿到返回的信息(图上值截取了部分,实际上有很多)

总结:这个经历可供大家毫无头绪的时候参考,因为自己刚遇到这个情况的时候也是束手无策的,不知道怎么从哪里开始诊断,当然,大家也可以继续往数据库等层面找原因看看慢日志等,慢慢去发掘原因

发布了6 篇原创文章 · 获赞 9 · 访问量 392
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览