我有一个java应用程序在带有OpenJDK11的docker容器中运行。我想使用jstat
工具(在容器中可用(从这个应用程序中获取GC数据。知道我如何从主机或在同一主机上运行的另一个容器中实现这一点吗?
谢谢:(
进程在主机上可见,因此如果您知道主机看到的pid,则jstat -gcstat <pid>
在主机上工作。
您可以通过docker inspect -f '{{.State.Pid}}' <container name>
获取container-pid-1的主机pid,然后遍历进程树(例如通过/proc
或封装该逻辑的某个库(以找到java子进程,然后调用jstat。
另一种选择是通过nsenter
或docker exec
(部分(加入容器的命名空间,然后在容器内执行jps
和jstat
。但是,如果您不信任容器,这可能是一个安全问题。