首页主机资讯Ubuntu上Java应用如何进行性能监控

Ubuntu上Java应用如何进行性能监控

时间2025-12-04 23:09:03发布访客分类主机资讯浏览477
导读:Ubuntu上Java应用性能监控实操指南 一 系统级监控 进程与资源总览 使用 top/htop 查看进程 PID、%CPU、%MEM,快速识别异常进程;必要时用 ps -ef | grep java 精准定位 Java 进程。 使用...

Ubuntu上Java应用性能监控实操指南

一 系统级监控

  • 进程与资源总览
    • 使用 top/htop 查看进程 PID、%CPU、%MEM,快速识别异常进程;必要时用 ps -ef | grep java 精准定位 Java 进程。
    • 使用 vmstat 1iostat -x 1sar -u/-r/-b 1 观察 CPU上下文切换、I/O 等待、内存与交换、磁盘吞吐 等系统瓶颈。
  • 可视化与告警
    • 部署 Netdata 做实时可视化;结合 Monit/Supervisord 对进程存活与健康做守护与自动拉起。

二 JVM内置工具

  • 快速定位与持续观测
    • jps 获取 PID;用 jstat -gcutil 5000 10 观察 GC 次数/时间、Eden/Survivor/Old 区使用率,判断是否存在频繁或长暂停 GC。
    • jstack > thread_dump.txt 抓取线程栈,排查 死锁、阻塞、RUNNABLE 高占比 等问题;必要时多次采样对比。
    • jmap -dump:format=b,file=heapdump.hprof 导出 堆转储,再用 VisualVM/MAT 分析对象泄漏与占用热点。
    • jconsole visualvm 在线查看 堆内存、线程、类加载、CPU 等,适合开发/测试环境。
    • 使用 Java Flight Recorder(JFR) 做低开销运行时记录:java -XX:+UnlockDiagnosticVMOptions -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=app.jfr -jar myapp.jar(生产可用,注意版本与授权)。

三 生产级监控与APM

  • 指标采集与可视化
    • 通过 JMX Exporter + Prometheus + Grafana 构建 JVM 指标(如 Heap/Meta、GC 次数/时间、线程数、类加载、Compilation)的 拉取式监控可视化看板,便于长期趋势与告警。
  • 应用性能剖析
    • 使用 Arthas 在线诊断(反编译、热修复、watch/trace/stack 等),无需重启定位问题。
    • 使用 async-profiler 进行 低开销 CPU/内存分配采样,适合生产环境的热点定位。
    • 选择 JProfiler(商业)或 Glowroot、Pinpoint、Kamon、StagemonitorAPM 方案,获得 调用链、慢事务、错误追踪 等更高层能力。

四 常见故障的排查路径

  • CPU飙高
    • top/htop 找到 Java PID → 用 jstack 抓取线程栈 → 识别 RUNNABLE 长时占用线程或频繁 GC 线索 → 结合 jstat -gcutil 判断 GC 是否异常 → 用 async-profiler/VisualVM 定位热点方法;若由 频繁 GC 引起,进一步分析堆与对象生命周期。
  • 内存问题(泄漏/OOM)
    • 观察 jstat 中老年代持续上涨 → 执行 jmap -dump 导出 heapdump.hprof → 用 VisualVM/MAT 查找 保留路径与泄漏对象 → 修正对象生命周期或缓存策略。
  • 线程问题(卡死/死锁)
    • 多次 jstack 采样,搜索 BLOCKED/DEADLOCK 关键字与锁竞争栈 → 结合代码审查同步块/资源争用 → 必要时用 jconsole 观察线程数与状态变化。

五 一键可用的监控命令清单

  • 快速巡检
    • 查看 Java 进程:ps -ef | grep java
    • 实时资源:top 或 htop
    • GC 概况:jstat -gcutil 1000
    • 线程栈:jstack > thread_dump.txt
    • 堆转储:jmap -dump:format=b,file=heapdump.hprof
    • 在线监控:jconsole 或 visualvm
  • 生产可观测
    • 启动 JFR:java -XX:+UnlockDiagnosticVMOptions -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=app.jfr -jar myapp.jar
    • 指标链路:JMX Exporter → Prometheus → Grafana(按官方指引配置 job/relabel/面板)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu上Java应用如何进行性能监控
本文地址: https://pptw.com/jishu/764061.html
如何在Ubuntu上构建Java微服务架构 Ubuntu上Java GUI开发如何选择框架

游客 回复需填写必要信息