search.png
关于我
menu.png
docker / k8s 容器内运行 jmap/jstat提示 Unable to get pid of LinuxThreads manage thread

要在线上查看gc情况,进入k8s容器的bash,ps -ef 发现目标的java线程的进程号是1,运行jmap 报错:

Unable to get pid of LinuxThreads manage thread

查询了一下,原来是1是默认的启动进程,Dockerfile的ENTRYPOINT的执行默认就是 1。

说是要用tini来启动。但是里边是内网,又找不到tini的离线包。

几番查找。幡然醒悟,只要不要让那个java进程直接启动就好了。

修改Dockerfile


RUN echo "java -jar xxx.jar" > /run.sh && chmod 777 /run.sh

ENTRYPOINT ["/bin/sh","/run.sh"]

之后进入容器,ps -ef ,之前的java进程变成了6。

执行jmap 不再报错。nice。

版权声明

知识共享许可协议 本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
发布时间:2021年08月03日 11:35:30

评论区#

还没有评论哦,期待您的评论!

关闭特效