背景
目前在某厂又开始了php,哎,逃不掉的php。又碰上了优化季度,所以被分了2个接口优化下,要求达到3个9就行。 目前是2个九,嘿嘿,要求已经很低了是吧?但是php这个东西还是比较难搞的。
基础实施比较差的,也没有服务化,像有的服务化做的好的,可以直接分布式链路追踪看出耗时在哪里。
同时希望最小改动原则,成本尽可能的低,效果尽量早点体现出来。
开始
1.先弄清3个9是根据啥统计的
对的,我们要达成目标,就先要知道目标是怎么统计的。后面我去问了下,发现是统计nginx的日志,非200的日志个数/总日志个数,就是指标了。
再结合监控看,发现目前非200的码499比较多,这个499不是标准的http 状态码,而是nginx自定义的。意思是说前端主动断开了链接,可以理解为服务端处理太慢,前端等不及就断开了链接。
也就是说,这个php的app确实是慢。平均耗时达到了700多ms。捞了一些499的日志,几秒的请求
多的是。这里也可以统计下分为,90分为的请求占比多少。等等。
总结:这里我们了解到了,服务端的处理慢,导致了比较多的超时,从而nginx日志打印499,从而我们的指标是差的。下一步就是查一下哪些地方比较耗时。
ps:在查看监控时发现了一个有用的地方,某天的上线,导致了一个接口平响增加了200ms。
具体见4
2.先梳理接口的业务
优化接口,了解业务是不可缺少的,否则就是纸上谈兵。所以首先我将接口里有IO调用的都用流程图画了出