Doom流量回放工具导致的测试环境服务接口无响应的排查过程
- 现象描述:
a)部分接口(A组接口)无响应
b)部分接口(B组接口)正常响应
c)还有一部分接口(C组接口),场景1无响应,场景2正常响应 - 具体情况
A组接口,业务服务内,没有日志信息打印
B组接口,业务日志正常打印
C组接口,场景1正常打印日志,场景二日志打印到某个位置,后续日志无打印也无报错或者异常信息 - 现象出现时间点
第一次是上周二出现,当时本地无法复现,当时怀疑可能是环境问题,重启后小时
第二次是上周六出现,仔细观察了现象,与周二基本一致,总结出现象与本文第一部分(现象描述)一致,当时测试等着进行业务测试只能重启。然后分析原因,未找出问题
周一与同事交流,建议从jvm看起,有没有内存资源、cpu资源异常问题、有没有锁表问题等。
后面观察到,在服务异常响应时间段内存在阻塞线程,但因为内存快照没有抓取,无法确定原因。然后联系DBA排除了锁表的可能性。
4.压测环节
将问题反映给测试后,建议进行压测观察一下,但因为设计的接口太多,只能对当时查询异常的接口压测,但问题没有复现。
直到本周一,情况出现,联系压测的同事,最终找到阻塞的线程是来自doom,当时以为是业务代码哪里用到了这个工具,但是没有找到,最后才是到是测试用的工具,对业务服务的接口产生了干扰,该工具的任务停掉后,业务服务恢复正常。
doom工具具体导致线程阻塞的原因,还在排查。