CentOS 上 Java 故障排查技巧
一 快速定位与系统检查
source 生效。二 日志与常见报错定位
三 JVM 层诊断与内存问题处理
四 启动失败与服务化排障
五 高频场景速查表
| 症状 | 优先命令 | 关键检查点 | 常见修复 |
|---|---|---|---|
| 端口被占用 | ss -lntp | grep :端口 | 占用进程 PID、启动用户 | kill |
| Java 未找到 | which java; readlink -f $(which java); alternatives --config java | JAVA_HOME、PATH、多版本冲突 | 正确设置 JAVA_HOME/PATH,切换 alternatives |
| 启动即退出 | tail -f logs/*.log; systemctl status |
应用日志报错、配置错误 | 修正配置、依赖与权限 |
| CPU 飙高 | top -H -p |
热点线程、锁竞争 | 优化代码/锁、减少阻塞 |
| 频繁 Full GC | jstat -gc |
FGC/FGCT 增长、晋升失败 | 增大堆 -Xmx/-Xms、调优 GC |
| OOM | jmap -dump; MAT | 泄漏对象、支配树 | 修复泄漏、调整对象生命周期 |
| JVM 崩溃 | hs_err_pid*.log | 信号、Problematic frame | 排查 JNI、升级 JDK/内核 |
| 磁盘写满 | df -h; du -sh /var/log /opt | 日志/堆转储占满 | 清理旧日志、配置 logrotate、转移 dump 路径 |