在 CentOS 上排查 Java 日志,一般可以从 日志位置、日志内容、运行环境、工具分析 几个层面来做。下面按实战顺序说明。
不同运行方式,日志位置不同:
ps -ef | grep java
常见情况:
nohup java -jar app.jar > app.log 2>&1 &logs/catalina.outdocker logs 容器名一般在:
/var/log/
/opt/应用名/logs/
~/logs/
/var/log/tomcat/
/usr/local/tomcat/logs/
重点看:
catalina.outlocalhost.loghost-manager.logjournalctl -u your-service.service -f
docker logs -f 容器名
搜索关键字:
grep -n "ERROR" app.log
grep -n "Exception" app.log
常见异常类型:
OutOfMemoryError → 内存问题StackOverflowError → 死循环/递归ClassNotFoundException → 包缺失Connection refused → 服务未启动/端口错Timeout → 网络或数据库慢top -c
找到高 CPU 的 PID
top -Hp PID
printf "%x\n" 线程ID
jstack PID | grep -A 30 0x线程ID
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/java/heapdump.hprof
用工具:
加参数:
-Xloggc:/var/log/java/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
分析:
netstat -tunlp | grep java
ss -tunlp
检查:
firewall-cmd --list-all
如果是 logback / log4j:
logback.xmlps 确认进程top 看 CPU / 内存jstack 看线程如果你愿意,可以告诉我:
我可以帮你精准定位问题。