当前位置:首页 > Linux > 正文

Linux如何查看jar运行状态

使用ps或top命令监控jar进程状态和资源占用;通过jstat检查JVM内存及GC情况;实时追踪日志文件变化;或部署Prometheus等专业工具实现自动化监控告警

为什么需要监控Jar程序?

  1. 运行状态保障:实时检测进程存活,避免服务中断
  2. 资源瓶颈预警:识别CPU、内存、线程泄漏等异常
  3. 故障快速定位:通过日志和线程快照分析崩溃原因
  4. 性能优化依据:统计GC行为、堆内存使用等JVM指标

基础监控:Linux内置命令

进程状态检查

# 查看Jar进程资源占用(按CPU排序)
top -p $(pgrep -f your-app.jar)
# 持续监控内存变化
watch -n 5 "ps -p $(pgrep -f your-app.jar) -o pid,%cpu,%mem,rss,vsz,cmd"
  • 关键指标
    %MEM >70% 可能内存泄漏 | %CPU 持续>90% 需检查代码逻辑

端口与网络监控

# 检查服务端口监听状态
netstat -tulnp | grep java
# 跟踪网络连接(排查阻塞)
ss -tnp | grep $(pgrep -f your-app.jar)

日志监控:实时追踪与分析

基础日志查看

# 动态追踪最新日志
tail -100f /path/to/app.log
# 关键错误检索(含上下文)
grep -A 10 -B 5 "ERROR" /path/to/app.log

高级日志管理(推荐方案)

  • ELK Stack
    使用Filebeat收集日志 → Logstash过滤 → Elasticsearch存储 → Kibana可视化
  • 轻量替代
    journalctl -u your-jar-service.service -f(需配置systemd托管)

JVM深度监控:JDK内置工具

实时性能指标

# 监控GC与堆内存(2秒采样1次)
jstat -gcutil $(pgrep -f your-app.jar) 2000
# 输出示例:
 S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT    GCT  
 0.00  99.80  10.25  35.62  95.12  92.10   15     0.125    2     0.350  0.475
  • 告警阈值FGC(Full GC次数)每小时>5次 | GCT(GC总时间)占比>10%

线程与堆快照分析

# 生成线程转储(排查死锁)
jstack -l $(pgrep -f your-app.jar) > thread_dump.txt
# 内存溢出时自动生成堆快照
java -jar -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dump your-app.jar

自动化监控:企业级方案

Prometheus + Grafana 体系

  1. 数据采集
    • 部署JMX Exporter暴露JVM指标
      java -javaagent:./jmx_prometheus.jar=8080:config.yaml -jar your-app.jar
  2. 仪表盘配置

    导入Grafana模板ID 8563(JVM监控)| 8878(Spring Boot)

告警规则示例(PromQL)

# 堆内存超限告警
sum(jvm_memory_used_bytes{area="heap"}) / sum(jvm_memory_max_bytes{area="heap"}) > 0.8
# 线程死锁检测
jvm_threads_deadlocked > 0

进程存活监控(Zabbix方案)

UserParameter=jar.process.exists[*], pgrep -f $1 | wc -l
  • 配置触发器:{jar.process.exists["your-app.jar"].last()} = 0

最佳实践建议

  1. 进程托管
    使用systemdSupervisord守护进程,配置自动重启

    Linux如何查看jar运行状态  第1张

    # systemd示例(/etc/systemd/system/jar-app.service)
    [Service]
    Restart=on-failure
    RestartSec=30s
  2. 健康检查接口
    Spring Boot应用启用Actuator:

    management:
      endpoint:
        health:
          show-details: always
      endpoints:
        web:
          exposure:
            include: health,metrics
  3. 日志规范

    • 强制JSON格式输出
    • Logback配置滚动归档和压缩
    • 敏感信息脱敏处理
  4. 资源隔离

    • 使用cgroups限制内存:java -jar -XX:+UseCGroupMemoryLimitForHeap ...
    • Docker容器部署时设置--memory-swap--cpus

引用说明

  1. Oracle官方JDK监控工具文档:Java Platform SE 8 Tools
  2. Prometheus JMX Exporter配置指南:GitHub仓库
  3. Grafana仪表盘模板库:Dashboards | Grafana Labs
  4. Linux性能分析权威书籍:《Systems Performance: Enterprise and the Cloud, 2nd Edition》

重要提示:生产环境操作前务必在测试环境验证,快照类命令(jmap/jstack)会导致进程暂停,建议在低峰期执行。

0