docker内 jmap|jstack操作时,错误提示 ptrace(PTRACE_ATTACH, ..) failed for 219: Operation not permitted

因为需要分析java内存增长原因,今天准备去dump一个 java 线程下来,下面是docker 内部执行dump操作时遇到的问题与解决步骤。

开始dump

# 执行 jstack
jstack -l 219 > test.dump
219: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding

上面执行 jstack 时,提示target process not responding or HotSpot VM not loaded, 也提示了可以添加参数 -F

加上 -F 参数

jstack -l -F 219 > test.dump

额,又遇到问题了。

在这里插入图片描述

上网搜索了一下相关问题,网上说 ptrace-scope为了防止用户访问当前正在运行的进程的内存和状态 , 默认情况下不允许再访问了. 可以临时开启.

关闭ptrace-scope 防护

# 临时解决 0 开启, 1 关闭
echo 0 > /proc/sys/kernel/yama/ptrace_scope  # 宿主机执行
# 永久设置
/etc/sysctl.d/10-ptrace.conf  
# 1  修改为 0
kernel.yama.ptrace_scope = 0

再次dump

jstack -l -F 219 > test.dump

很好,这次就没上面问题了,很顺利的dump 下来了,接下来就可以对它展开分析了。

这次的错误就记录到此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值