我是按照这里提到的步骤操作的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堆转储?
发布于 2021-07-25 21:35:19
通常情况下,容器的可用工具是有限的(就像你得到的是“更多”,而不是“更少”),所以可用的工具取决于你的容器。
用于获取堆转储的两个工具是jmap和jcmd,请检查容器中是否包含jcmd。
https://www.adam-bien.com/roller/abien/entry/taking_a_heap_dump_with
如果没有,我建议将java应用程序放在一个包含jmap或jcmd的容器中,然后运行它;即使容器比较“重”,这也不会影响java应用程序和堆转储,所以它们是一样的。
如果这不是一个选项,也许这将是https://techblog.topdesk.com/coding/extracting-a-heap-dump-from-a-running-openj9-java-process-in-kubernetes/ (不是我的)。
https://stackoverflow.com/questions/68518974
复制相似问题