簡體   English   中英

如何使用 jmap 從 Kubernetes Pod 獲取 Java 堆轉儲?

[英]How to get Java Heap Dump from a Kubernetes Pod using jmap?

我正在按照這里提到的步驟如何從 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 堆轉儲?

通常容器受限於可用的工具(比如你得到“更多”,但你不會得到“更少”),所以可供你使用的工具取決於你的容器。

用於獲取堆轉儲的 2 個工具是 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/ (不是我的) .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM