记一次使用 Arthas 排查接口慢的问题


1、问题复现

在现网系统中,用户操作前端页面时,需要等待 1s 左右才能出开数据,这给用户带来极不友好的体验,严重的还可能造成用户流失等。

image-20230315103349560

2、精准定位

我们的服务是通过容器部署的,首先登陆到容器 pod 实例,并下载 Arthas 工具:

1wget https://arthas.aliyun.com/arthas-boot.jar

image-20230315110014652

紧接着通过 java -jar arthas-boot.jar 启动 Arthas :

image-20230315110207485

选择对应的服务应用,此处只有一个进程,因此输入 1 按回车即可,并可输入 help 命令查看 Arthas 有哪些命令功能:

image-20230315110908090

我们需要查询具体接口为什么执行缓慢,因此只需使用到 trace 命令,格式为: trace 全限定路径类名 方法名

image-20230315111527031

通过日志追踪发现是在执行 calculateRuleMap 方法时耗时高,结合代码排查定位该方法具体的代码逻辑,并进一步优化。