温馨提示×

centos java日志怎样排错

小樊
39
2026-09-06 06:10:40
栏目: 编程语言

在 CentOS 上排查 Java 应用日志和错误,通常可以按下面几个步骤进行。


一、明确日志在哪里

1. 常见日志位置

  • 应用自身日志
    • /var/log/xxx/
    • 应用目录下 logs/
    • 如:/opt/app/logs/app.log
  • 系统日志
    • /var/log/messages
    • /var/log/secure
  • Journal 日志(CentOS 7+)
    journalctl -u your-service-name
    

2. 如果是 systemd 服务

systemctl status java-app
journalctl -u java-app -f

二、看 Java 错误类型

1. 启动失败

重点看:

  • Exception in thread "main"
  • ClassNotFoundException
  • NoClassDefFoundError
  • UnsupportedClassVersionError(JDK 版本不对)

示例:

java -version

确认 JDK 版本是否匹配。


2. 运行中报错

常见关键字:

  • OutOfMemoryError
  • StackOverflowError
  • SQLException
  • TimeoutException
  • NullPointerException

三、开启和查看 GC 日志(很重要)

1. 启动参数加 GC 日志

java \
-Xloggc:/var/log/app/gc.log \
-XX:+PrintGCDetails \
-XX:+PrintGCDateStamps \
-jar app.jar

2. 分析 OOM

如果出现:

java.lang.OutOfMemoryError: Java heap space

可加:

-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/app/heap.hprof

用工具分析:

  • VisualVM
  • MAT(Eclipse Memory Analyzer)

四、用命令实时排查

1. 实时看日志

tail -f /var/log/app/app.log

2. 搜索错误

grep -i error /var/log/app/app.log
grep -i exception /var/log/app/app.log

3. 看进程和线程

ps -ef | grep java
top
jps

4. 线程堆栈(卡死、CPU 高)

jstack <pid> > thread.txt

或:

top -Hp <pid>

把线程 ID 转成 16 进制,在 jstack 中找。


五、常见 CentOS 环境问题

1. 权限问题

Permission denied

解决:

chown -R appuser:appuser /var/log/app

2. 中文乱码

locale

设置:

export LANG=zh_CN.UTF-8

3. 防火墙 / 端口

firewall-cmd --list-ports
netstat -tunlp | grep java

六、排错思路总结

  1. 先看应用日志
  2. 再看系统日志
  3. 确认 JDK 版本
  4. 看是否 OOM / 线程死锁
  5. 用 jstack / jmap 辅助

如果你能贴一段 具体报错日志 或说明是 启动失败 / 运行报错 / CPU 高 / 内存满,我可以帮你更精准地分析。

0