背景

线上问题排查是一名合格开发的必备技能。

设计

要求

  • 线上出现慢接口,如何定位问题
  • 任务无法启动,频繁重启,如何定位,例如淘宝同步服务

应对

arthas

通过阿里开源诊断工具arthas可以进行处理

  1. 拉取arthas jar包
  2. 启动arthas
  3. 加载到对应的jvm进程

全局

dashboard可以看到jvm信息,内存信息,gc信息,线程信息

慢接口

trace命令,后面跟方法的全限定名字,可以过滤耗时大于3000毫秒的。清晰看到耗时的方法,比如慢sql

异常空指针

watch命令,可以看完整的入参、出参、异常信息

代码不一致

jad可以反编译代码

内存分析工具mat

启动命令加入内存异常时生成堆内存信息,拿到mat分析。

例如可以看到http连接没有正常关闭释放资源。

扩展

淘宝用户同步服务

采用了6g还是同步内存溢出,商家过多,线程启动多,也占据内存空间。按组拆分部署。