1、背景介绍
目前项目中没有上链路跟踪相关的服务,APP项目采用原生+H5的方式进行开发,在单品页加入购物车的时候出现大部分情况可以加入成功,有时候加入不成功,这时候就引来了测试人员的讥笑,加入购物车还得靠运气呀...
2、查找原因
这种情况果敢的不能忍,自己写的是一个服务的中间件,用来做APP和后台系统的一个适配器,在加入购物车的时候中间层调用了除加入购物车的接口之外的几个外部接口,因为项目还不是稳定状态,自己在每个接口前后都会做调用时间统计,加入了几次发现接口返回时间都是在可以接受的时间内,由于问题出现的偶然性,导致了查找原因的困难性。
在线上记录的日志比较多,就导致查询日志的效率比较低,多次考虑之后觉得有前台没有将请求发出来的可能性,为了屏蔽其他不必要的日志,使用了grep命令来进行监控请求,tail -f access.log | grep path
,果然,试了几次之后发现出现问题的时候前台确实没有发送请求过来,这时候有两个原因:
- 前台确实没有请求
- 前台有请求,在Nginx转发的时候丢失了
为了确定具体是哪种原因,同时将Nginx日志也打开,发现确实前台没有将日志发送过来。
3、总结
这个问题虽然不是很麻烦,但是对于前后台交互的时候确实会给人带来很多困扰,一个原因是由于问题出现的不规律性和小概率性,另外一个原因是前台认为请求发出来了,后台没响应,但是后台开发人员认为是前台没发送请求。
对于Linux一些常用日志命令还是挺有用的,如果对grep命令不太熟悉,也不太好快速定位答问题,这篇文章值得一看:Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令。
网友评论