分析 CentOS 上的 Java 日志,通常可以从 定位日志、日志类型、分析思路、常用命令、问题定位 五个层面来做。下面给你一套实用、可落地的分析方法。
| 场景 | 常见路径 |
|---|---|
| Spring Boot | /var/log/xxx/、logs/、nohup.out |
| Tomcat | $CATALINA_HOME/logs/ |
| 自写 Java 程序 | 启动参数指定目录 |
| systemd 启动 | journalctl -u 服务名 |
application.log
catalina.out
stderr.log
stdout.log
gc.log
/var/log/messages
/var/log/syslog
journalctl
tail -f application.log
journalctl -u your-service -f
grep -i "exception" application.log
grep -i "error" application.log
sed -n '/2025-01-01 10:00/,/2025-01-01 11:00/p' application.log
grep -c "NullPointerException" application.log
grep -i "OutOfMemoryError" application.log
journalctl -u java-app --since "10 min ago"
找:
killedOOMexit codetop -H -p <pid>
结合:
jstack <pid> > stack.txt
分析线程栈。
jmap -histo:live <pid>
GC 日志中找:
-Xlog:gc*:file=gc.log
可用工具:
lessawkgrepsed| 现象 | 重点关注 |
|---|---|
| 请求变慢 | WARN、GC、线程池 |
| 502 / 503 | 端口、OOM、线程阻塞 |
| 内存暴涨 | OOM、GC、HashSet/Map |
| CPU 100% | 死循环、线程栈 |
你可以直接发我:
我可以 直接帮你定位问题根因,甚至给出优化建议。