我有一个java应用程序在一个使用OpenJDK11的docker容器中运行。我想使用jstat工具(在一个容器中可用)从这个应用程序中获取GC数据。你知道我如何从主机或运行在同一主机上的另一个容器中实现这一点吗?感谢您发送编修。
jstat
cyvaqqii1#
进程在主机上是可见的,因此如果您知道主机看到的pid,jstat -gcstat <pid>就可以在主机上工作。您可以通过docker inspect -f '{{.State.Pid}}' <container name>获得container-pid-1的host-pid,然后遍历进程树(例如,通过/proc或封装该逻辑的某个库)以找到java子进程,然后调用jstat。另一种选择是通过nsenter或docker exec(部分地)加入容器的名称空间,然后在容器内部执行jps和jstat。
jstat -gcstat <pid>
docker inspect -f '{{.State.Pid}}' <container name>
/proc
nsenter
docker exec
jps
1条答案
按热度按时间cyvaqqii1#
进程在主机上是可见的,因此如果您知道主机看到的pid,
jstat -gcstat <pid>
就可以在主机上工作。您可以通过
docker inspect -f '{{.State.Pid}}' <container name>
获得container-pid-1的host-pid,然后遍历进程树(例如,通过/proc
或封装该逻辑的某个库)以找到java子进程,然后调用jstat。另一种选择是通过
nsenter
或docker exec
(部分地)加入容器的名称空间,然后在容器内部执行jps
和jstat
。