首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jmap从Kubernetes Pod获取Java堆转储?

如何使用jmap从Kubernetes Pod获取Java堆转储?
EN

Stack Overflow用户
提问于 2021-07-25 21:21:33
回答 1查看 495关注 0票数 0

我是按照这里提到的步骤操作的How to get a heap dump from Kubernetes k8s pod?

我可以在pod中使用top命令获取进程id。然而,当我运行jmap时,我得到了这样的结果:

代码语言:javascript
复制
~ $ jmap
sh: jmap: not found

我使用以下命令访问pod : kubectl exec -it -- sh

我还尝试了这个命令:

代码语言:javascript
复制
kubectl exec -it <pod> -- jmap -dump:live,format=b,file=heapdump.bin 1

但是我得到了:

代码语言:javascript
复制
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堆转储?

EN

回答 1

Stack Overflow用户

发布于 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/ (不是我的)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68518974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档