温馨提示×

centosjava日志异常如何排查

小樊
50
2026-10-26 15:07:09
栏目: 编程语言

在 CentOS 上排查 Java 日志异常,通常可以从日志位置、日志内容、系统环境、Java 运行状态几个方面入手。下面给你一套比较实用的排查思路和常用命令。


一、确认 Java 应用及日志位置

1. 找到 Java 进程

ps -ef | grep java

或

jps -l

2. 查看应用日志目录

常见位置:

  • 应用目录下:/opt/app/logs
  • Spring Boot:/var/log/xxx
  • Tomcat:/usr/local/tomcat/logs

查看日志:

tail -f catalina.out
tail -f app.log

二、常见日志异常及排查方法

1. OutOfMemoryError(内存溢出)

日志特征:

java.lang.OutOfMemoryError: Java heap space

排查步骤:

# 查看 JVM 内存参数
ps -ef | grep java

# 查看堆内存使用
jmap -heap <pid>

# 生成堆转储
jmap -dump:format=b,file=/tmp/heap.hprof <pid>

分析工具:

  • Eclipse MAT
  • VisualVM

2. CPU 占用过高

日志可能无明显异常,但系统卡顿。

top

找到高 CPU 的 PID 后:

top -Hp <pid>

拿到线程 ID(十进制转十六进制):

printf "%x\n" <tid>

查看线程栈:

jstack <pid> | grep <tid> -A 30

3. 连接异常(数据库 / Redis)

日志特征:

Connection refused
Timeout
Too many connections

排查:

# 端口连通性
telnet 127.0.0.1 3306

# 端口监听
netstat -tunlp | grep 3306

# 防火墙
firewall-cmd --list-all

4. 权限问题

CentOS 常见:

Permission denied

检查:

ls -l /path/to/log
whoami

5. 时区 / 编码异常

日志时间不对或乱码:

date
locale

JVM 参数示例:

-Duser.timezone=Asia/Shanghai
-Dfile.encoding=UTF-8

三、系统级日志辅助排查

系统日志

/var/log/messages
/var/log/secure

OOM Killer

dmesg | grep -i kill

四、Java 自带工具速查

工具 作用
jps 查看 Java 进程
jstack 线程栈
jmap 内存分析
jstat GC 状态
jinfo JVM 参数

示例:

jstat -gcutil <pid> 1000

五、建议的排查顺序

  1. tail -f 实时看日志
  2. 定位异常关键字(Exception / Error)
  3. 判断类型(内存 / 线程 / 网络 / 权限)
  4. 结合系统日志和 JVM 工具
  5. 复现 or 加日志定位

如果你能贴一段具体的异常日志内容或说明是什么类型的 Java 应用(Spring Boot / Tomcat / 微服务),我可以帮你更精准地分析。

0 踩