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