如何监控java
监控Java应用的方法
使用JMX(Java Management Extensions) JMX是Java平台的标准监控和管理技术,可以监控JVM和应用的运行状态。通过MBean暴露应用指标,使用JConsole或VisualVM等工具连接JMX端口查看。
集成APM工具 应用性能管理(APM)工具如New Relic、Dynatrace、AppDynamics提供全栈监控能力。它们通过Java Agent注入方式采集JVM指标、方法调用链、数据库查询等数据,并支持告警和可视化分析。
Prometheus + Grafana方案 在应用中引入Micrometer或Prometheus Java客户端库,暴露/metrics端点。Prometheus定时拉取指标数据,Grafana配置仪表盘展示。适合监控吞吐量、延迟、错误率等业务指标。
日志监控 使用ELK(Elasticsearch、Logstash、Kibana)或Splunk收集和分析日志。结合Logback/SLF4J输出结构化日志,通过日志级别过滤和关键字搜索快速定位问题。
JVM内置工具
- jstat:监控类加载、GC、编译统计
- jstack:生成线程快照分析死锁或高CPU问题
- jmap:生成堆转储文件分析内存泄漏
- jcmd:多功能诊断命令,支持JFR录制
关键监控指标
JVM层面
- 内存使用:堆/非堆内存、各分区使用率
- GC情况:频率、耗时、回收效果
- 线程状态:活跃线程数、死锁检测
- 类加载:已加载类数量、卸载情况
应用层面
- 请求量:QPS、并发数
- 响应时间:平均/最大/P99延迟
- 错误率:异常抛出次数
- 依赖服务:数据库/API调用耗时
系统层面
- CPU利用率:进程/系统级别
- 磁盘IO:读写延迟、吞吐量
- 网络:连接数、带宽使用
- 文件描述符:打开数量限制
实施建议
生产环境部署
- 避免JMX直接暴露公网,通过SSH隧道或防火墙限制访问
- APM Agent需测试性能影响,通常建议控制在3%资源损耗内
- Prometheus采集频率根据业务需求调整,通常15s-1min
告警策略
- 分层设置阈值:WARN和CRITICAL级别
- 避免告警风暴,配置抑制规则和通知静默期
- 关键指标如GC耗时、内存溢出需立即通知
性能分析技巧

- 内存泄漏排查:对比多次堆转储的对象增长趋势
- CPU高负载:结合top -H和jstack定位热点线程
- 间歇性故障:开启JFR(Java Flight Recorder)录制事件流






