记一次使用 Arthas 排查接口慢的问题
1、问题复现
在现网系统中,用户操作前端页面时,需要等待 1s 左右才能出开数据,这给用户带来极不友好的体验,严重的还可能造成用户流失等。
2、精准定位
我们的服务是通过容器部署的,首先登陆到容器 pod 实例,并下载 Arthas 工具:
1wget https://arthas.aliyun.com/arthas-boot.jar
紧接着通过 java -jar arthas-boot.jar
启动 Arthas :
选择对应的服务应用,此处只有一个进程,因此输入 1 按回车即可,并可输入 help
命令查看 Arthas 有哪些命令功能:
我们需要查询具体接口为什么执行缓慢,因此只需使用到 trace
命令,格式为: trace 全限定路径类名 方法名
通过日志追踪发现是在执行 calculateRuleMap 方法时耗时高,结合代码排查定位该方法具体的代码逻辑,并进一步优化。