k8s集群内的java服务的Pod有时内存会暴涨,使用Arthas导出dump文件帮助开发排查问题所在。 Arthas 是一个开源的 Java 诊断工具,主要用于在生产环境中实时监控和调试 Java 应用程序。能够实时监控 Java 应用的性能指标,如 CPU 使用率、内存使用情况、线程情况等。 如果Pod内有外网,直接使用wget或者curl下载解压

wget https://repo1.maven.org/maven2/com/taobao/arthas/arthas-packaging/4.0.4/arthas-packaging-4.0.4-bin.zip
unzip arthas-packaging-4.0.4-bin.zip

运行这个服务大概消耗100M的内存,注意自己容器的内存限制

java -jar arthas-boot.jar

启动后自动进入服务交互页面,执行命令直接获取dump文件

heapdump arthas-output/dump.hprof

获取到的文件使用kubectl cp命令拿出来,交给开发人员分析问题所在。 如果容器没有网络直接下载压缩包,使用kubectl cp命令将压缩包传给Pod即可。