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

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

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

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

402d9829403a49afe5095c084627c592.png

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

013e21810726f929462e1d351f68018d.png

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

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

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值