【发布时间】:2021-07-25 13:21:32
【问题描述】:
我按照这里提到的步骤How to get a heap dump from Kubernetes k8s pod?
我可以在 pod 中使用 top 命令获取进程 ID。但是,当我运行 jmap 时,我得到了这个:
~ $ jmap
sh: jmap: not found
我使用以下命令访问 pod:kubectl exec -it -- sh
我也试过这个命令:
kubectl exec -it <pod> -- jmap -dump:live,format=b,file=heapdump.bin 1
但我得到了:
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"jmap\": executable file not found in $PATH": unknown command terminated with exit code 126
还有其他方法可以从 pod 中获取 java 堆转储吗?
【问题讨论】:
-
很可能容器中没有安装jmap,所以不能在容器中使用jmap。这可能只是一个路径问题,尽管我对此表示怀疑。我认为 jmap 在 JDK 中,但不在 JRE 中,并且通常,我会说容器化应用程序中不需要完整的 JDK。你是程序员吗?这种情况可以重复吗?然后用 JDK 构建一个容器来做任何你想做的事情。
标签: java kubernetes heap-memory dump