java - 当内存达到特定值时,Kubernetes会捕获内存转储?
问题描述
我的一些 pod 运行一个容器,有些运行两个。我已经Xmx
为每个容器分配了 4GB,我想要的是如果容器达到 3GB,Kubernetes 会进行内存转储。
可行吗?
解决方案
也许您可以按照以下方式进行操作。
创建一个shell脚本
- 使用它来检查您的进程(看起来像 Java 进程)并提取已使用的内存并触发内存转储。
- 正如@Matt 所提到的,这是一个通用的解决方案
- 使用
ps
命令设置进程 - 利用
jcmd <PID> GC.heap_dump <output-file>
- 使用
将此文件添加到您的 docker 映像中
然后添加一个 CMD 以在后台运行 shell 脚本并在前台运行您的应用程序。