唯品会 vjdump 教程

JAVA herman 326浏览 0评论

VJDump是线上JVM数据紧急收集脚本。

它可以在紧急场景下(比如马上要对进程进行重启),一键收集jstack、jmap以及GC日志等相关信息,并以zip包保存(默认在目录/tmp/vjtools/vjdump下),保证在紧急情况下仍能收集足够的问题排查信息,减轻运维团队的工作量,以及与开发团队的沟通成本。

收集数据包括:

  • JVM启动参数及命令行参数: jinfo -flags $PID
  • thread dump数据:jstack -l $PID
  • vjtop JVM概况及繁忙线程:vjtop.sh -n 1 -d 3 $PID (需要将vjtop.sh 加入用户的PATH变量中)
  • jmap histo 堆对象统计数据:jmap -histo $PID & jmap -histo:live $PID
  • GC日志(如果JVM有设定GC日志输出)
  • heap dump数据(需指定–liveheap开启):jmap -dump:live,format=b,file=${DUMP_FILE} $PID

下载地址:vjdump.sh

入门教程

以目标JVM相同用户或root用户运行脚本:

# 对指定的进程PID进行急诊
vjdump.sh $pid

# 额外收集heap dump信息(jmap -dump:live的信息)
vjdump.sh --liveheap $pid

在收集过程中,某些命令如jmap -histo:live $PID 会造成JVM停顿,因此仅用于紧急情况或已摘流量的情况。为了避免连续停顿,在每条会造成停顿的收集指令之间,默认插入了1秒的执行间隔。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847,QQ3群:187424846。QQ群进群密码:xttblog,想加微信群的朋友,可以微信搜索:xmtxtt,备注:“xttblog”,添加助理微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » 唯品会 vjdump 教程