jstack查看进程的堆栈信息并保存

jstack查看进程的堆栈信息并保存

生产环境中有时候服务器可能会出现资源占用情况飙升等问题,这时候需要检查开发的程序,可以使用jstack命令

jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息

命令格式

$jstack [ option ] pid

$jstack [ option ] executable core

$jstack [ option ] [server-id@]remote-hostname-or-IP

参数说明:

pid: java应用程序的进程号,一般可以通过jps来获得;

executable:产生core dump的java可执行程序;

core:打印出的core文件;

remote-hostname-or-ip:远程debug服务器的名称或IP;

server-id: 唯一id,假如一台主机上多个远程debug服务;

下面以实际操作来演示使用jstack来查看资源占用最高的进程的堆栈信息

  • 使用top命令查看java进程中最耗费资源的pid
    在这里插入图片描述

  • 使用top -Hp pid找到上面步骤中pid内最耗资源的pid
    在这里插入图片描述

  • 计算第二步线程的pid的十六进制 printf “%x\n” pid
    在这里插入图片描述

  • 使用jstack定位第二步找出的pid的详细信息 jstack pid | grep 十六进制进程 -A 100
    在这里插入图片描述

  • 由于上一步骤是在root用户下进行的,使用nifi用户执行jstack命令
    在这里插入图片描述

  • 保存完整堆栈信息 sudo -u 用户 jstack pid >> filename.log
    在这里插入图片描述

  • 也可以使用jmap命令生产dump文件(体积比较大),文件在/home下
    sudo -u nifi jmap -dump:format=b,file=nifi20200105.dump 11215

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值