要在线上查看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。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐