仅安装JRE的CentOS7服务器如何监控JVM
仅JRE环境下CentOS7的开源JVM监控工具
以下是适合仅安装JRE的CentOS7环境的开源JVM监控/排查工具,覆盖实时查看、远程监控、长期追踪、性能分析等场景:
jstat(JRE自带)
Oracle JRE和OpenJDK JRE默认包含该工具,无需额外安装。主要用于监控JVM的垃圾回收、类加载、内存使用状态。
常用命令示例:# 每1秒输出一次GC统计信息,共输出10次 jstat -gcutil <Java进程PID> 1000 10可快速定位内存回收效率低、老年代内存持续增长等问题。
jcmd(JRE自带)
同样是JRE内置工具,功能全面,可获取JVM运行时参数、线程栈、堆转储,甚至手动触发GC。
常用命令示例:# 查看目标进程的系统属性 jcmd <Java进程PID> VM.system_properties # 生成堆转储文件到指定路径 jcmd <Java进程PID> GC.heap_dump /tmp/heap_dump.hprof可替代JDK中的jstack、jmap等工具,满足基础故障排查需求。
VisualVM(远程监控模式)
虽然VisualVM程序本身随JDK发布,但可在本地机器安装JDK运行VisualVM,通过JMX协议远程连接仅JRE的服务器。
服务器端配置:启动Java程序时添加JMX参数(可根据安全需求调整认证/SSL配置):java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 \ -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false \ -Djava.rmi.server.hostname=<服务器IP> -jar your-app.jar本地打开VisualVM后添加远程连接,即可可视化监控内存、线程、GC状态,还能生成堆/线程快照做深入分析。
Prometheus + JMX Exporter
适合生产环境的长期监控与告警,无需依赖JDK。- 下载JMX Exporter的独立jar包(无需安装);
- 编写配置文件
config.yaml,定义需要采集的JVM指标(如内存池、GC次数、线程数等); - 启动Java程序时挂载agent:
java -javaagent:/opt/jmx_prometheus_javaagent.jar=9100:/opt/config.yaml -jar your-app.jar - 配置Prometheus抓取9100端口的指标,配合Grafana搭建可视化面板,实现JVM状态的长期追踪与异常告警。
AsyncProfiler
轻量级采样型性能分析工具,支持JRE环境,无需JDK。- 下载对应CentOS架构的预编译二进制包;
- 直接在服务器上运行命令采样:
# 启动CPU采样 ./profiler.sh start <Java进程PID> # 停止采样并生成火焰图 ./profiler.sh stop --output flamegraph.html
生成的火焰图可在浏览器打开,直观分析CPU热点、内存分配、锁竞争等性能瓶颈,适合定位复杂性能问题。
内容的提问来源于stack exchange,提问作者user1999453
相关产品推荐
相关产品推荐

