背景
线上问题排查是一名合格开发的必备技能。
设计
要求
- 线上出现慢接口,如何定位问题
- 任务无法启动,频繁重启,如何定位,例如淘宝同步服务
应对
arthas
通过阿里开源诊断工具arthas可以进行处理
- 拉取arthas jar包
- 启动arthas
- 加载到对应的jvm进程
全局
dashboard可以看到jvm信息,内存信息,gc信息,线程信息
慢接口
trace命令,后面跟方法的全限定名字,可以过滤耗时大于3000毫秒的。清晰看到耗时的方法,比如慢sql
异常空指针
watch命令,可以看完整的入参、出参、异常信息
代码不一致
jad可以反编译代码
内存分析工具mat
启动命令加入内存异常时生成堆内存信息,拿到mat分析。
例如可以看到http连接没有正常关闭释放资源。
扩展
淘宝用户同步服务
采用了6g还是同步内存溢出,商家过多,线程启动多,也占据内存空间。按组拆分部署。