随着kubernetes大火,工作中部署应用都上了kubernetes,当java应用出现oom时,就需要通过一些jvm监控工具来辅助分析java的堆栈,查出有内存泄漏的代码,如果java应用的镜像中安装的jdk环境有jmap、jstat还好,但是没有的话怎么办呢?使用过jconsole或jvisualvm的同学应该都知道,在连接jvm进程时可以选择连接本地进程或者远程jvm进程。 如果远程的jvm进程是直接在虚机上运行,那么通过以下配置是可以直接让本地的jconsole连接的:
完整配置:
-Djava.rmi.server.hostname=<ip> 指定jmx socket服务绑定的ip,必须保证远程客户端能够访问
-Dcom.sun.management.jmxremote.rmi.port=<port> 指定jmx socket监听端口
-Dcom.sun.management.jmxremote.host=<ip or hostname> 指定rmi socket服务绑定的网卡
-Dcom.sun.management.jmxremote.port=<port> 指定rmi socket绑定的端口
-Dcom.sun.management.jmxremote.ssl=false 关闭SSL验证
-Dcom.sun.management.jmxremote.authenticate=false 关闭远程登录认证,即允许任何用户连接
最小配置:
-Dcom.sun.management.jmxremote.rmi.port=<port> 指定jmx socket监听端口
-Dcom.sun.management.jmxremote.port=<port> 指定rmi socket绑定的端口
-Dcom.sun.management.j