上一篇
如何检查Java程序运行状态
- 后端开发
- 2025-06-10
- 4901
检查Java应用运行状态可通过日志分析异常信息,使用JConsole或VisualVM监控JVM内存与线程,集成Spring Boot Actuator查看健康端点,或编写心跳检测接口验证服务响应,关键点包括日志无报错、资源消耗稳定、功能请求正常返回。
基础命令行工具
-
jps
(Java进程查看)
查看当前系统所有Java进程的PID和主类名:jps -l # 输出示例:12345 com.example.MainApp
若进程存在,说明JVM已启动;无输出则表明应用未运行。
-
jstack
(线程分析)
检查线程死锁或阻塞:jstack <PID> > thread_dump.txt
分析输出文件:
- 搜索
deadlock
关键词检测死锁 - 查看线程状态:
RUNNABLE
(正常)、BLOCKED
(阻塞)
- 搜索
-
jstat
(GC监控)
实时监控垃圾回收:jstat -gcutil <PID> 1000 5 # 每秒1次,共5次
关注指标:
O
(老年代使用率)>90% 可能内存泄漏FGC
(Full GC次数)短时间内激增需警惕
日志分析:关键异常捕获
-
标准输出日志
启动时重定向日志:java -jar app.jar > app.log 2>&1
排查重点:
Exception
或Error
堆栈信息OutOfMemoryError
(内存溢出)ClassNotFoundException
(依赖缺失)
-
日志框架配置
在logback.xml
中增加健康检查日志:<logger name="com.example.health" level="DEBUG" />
代码中定时输出心跳:
Logger.info("Service heartbeat: {}", LocalTime.now());
监控平台集成(生产环境推荐)
工具 | 核心功能 | 使用场景 |
---|---|---|
Prometheus + Grafana | 实时采集JVM指标(CPU/内存/GC) | 可视化监控,设置阈值告警 |
Spring Boot Actuator | 暴露/health 端点 |
快速检查应用健康状态 |
ELK Stack | 集中分析分布式日志 | 故障溯源与趋势分析 |
示例:Spring Boot Actuator配置
- 添加依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
- 访问健康端点:
GET http://localhost:8080/actuator/health
正常响应:
{"status":"UP","components":{"diskSpace":{"status":"UP"}...}}
代码级健康检查
-
心跳检测接口
创建REST端点反馈内部状态:@RestController public class HealthController { @GetMapping("/ping") public String ping() { return "OK"; // 可扩展检查DB、缓存等依赖 } }
用curl测试:
curl -I http://localhost:8080/ping # 返回HTTP 200即正常
-
JMX监控
启用远程JMX连接:java -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.ssl=false -jar app.jar
使用
jconsole
或VisualVM
连接查看实时资源占用。
容器化环境特殊检查
若部署在Docker/K8s:
-
存活探针(Liveness Probe)
Kubernetes配置示例:livenessProbe: httpGet: path: /actuator/health port: 8080 initialDelaySeconds: 30 periodSeconds: 10
当连续失败时,K8s自动重启Pod。
-
就绪探针(Readiness Probe)
避免流量导入未初始化完成的容器:readinessProbe: exec: command: ["curl", "-f", "http://localhost:8080/ping"]
总结建议
- 开发阶段:结合日志与
jstack
/jstat
快速排错 - 测试环境:集成Actuator端点验证基础功能
- 生产环境:
- 必选:Prometheus+Alertmanager实时告警
- 可选:APM工具(如SkyWalking)追踪性能瓶颈
引用说明:
- Oracle官方文档:Java Troubleshooting Guide
- Spring Boot Actuator文档:Production-ready Features
- Kubernetes探针配置:Configure Liveness Probes
通过多层级监控组合,可构建覆盖从进程存活到业务逻辑的全方位健康检查体系,确保Java应用持续稳定运行。