温馨提示×

centos为何满java日志

小樊
33
2026-09-21 09:37:46
栏目: 编程语言

在 CentOS 服务器上“Java 日志突然很多 / 打满磁盘 / 日志狂刷”,通常逃不出下面几类原因。你可以对照排查:


一、最常见原因

1. 应用抛异常,被循环捕获又继续跑

典型现象

  • catalina.out / application.log 每秒几百行
  • 全是 Exception / StackTrace
  • 日志体积快速增长

常见代码问题

while (true) {
    try {
        doSomething();
    } catch (Exception e) {
        log.error("error", e); // 异常不断
    }
}

✅ 排查:

tail -f /var/log/messages
tail -f /opt/tomcat/logs/catalina.out

看是不是同一个异常一直刷。


2. 日志级别设置不对(生产用了 DEBUG)

现象

  • 日志量巨大
  • 内容多为 SQL / 请求参数 / 调试信息

常见配置错误

<root level="DEBUG">

✅ 建议生产环境:

<root level="INFO">

3. 没有日志滚动(log rotate 缺失)

现象

  • 只有一个 xxx.log 文件
  • 文件直接涨到几 GB

检查

ls -lh /var/log/

✅ 解决:

  • Tomcat:logrotate
  • Spring Boot:
logging:
  file:
    max-size: 100MB
    max-history: 7

二、CentOS 系统层面的原因

4. journald 或 rsyslog 被打满

Java 应用如果往 stdout 打日志,可能被 systemd 捕获:

journalctl -u your-java-service

✅ 检查:

du -sh /var/log/journal

5. OOM / GC 日志疯狂输出

现象

  • gc.log 非常大
  • 包含 Full GC 频繁

✅ 检查:

jstat -gcutil <pid> 1000

三、磁盘被打满的典型表现

df -h
du -sh /var/log/*

如果看到:

/var/log/messages   10G

多半是:

  • Java 写 syslog
  • 或异常被系统捕获

四、快速处理建议(应急)

# 1. 找到大文件
du -sh /var/log/* | sort -h

# 2. 临时清空(不要删文件)
: > /var/log/xxx.log

# 3. 停掉异常服务
systemctl stop your-service

五、你可以补充的信息(我可以直接帮你定位)

  1. 是哪个日志文件满?(catalina.out / application.log / messages)
  2. Java 是 Tomcat 还是 Spring Boot?
  3. 日志里重复最多的内容是什么?
  4. 磁盘是不是 100%?

发一段日志或 df -h 结果,我可以直接帮你判断是代码问题还是配置问题。

0 踩