在 CentOS 上 Java 日志占用过高,通常不是“磁盘空间突然没了”,而是日志产生速度远大于清理速度。下面按最常见原因 → 排查方法 → 解决建议给你一个清晰清单。
很多 Java 程序默认:
log4j / logback 级别是 DEBUG表现
/var/log 或应用目录快速增长%util 很高✅ 解决:
<root level="INFO">
或
logging.level.root=WARN
常见情况:
System.out.printlnrolling结果:
app.log 几十 GB✅ 解决:
logback / log4j2 的 RollingFileAppenderlogrotate/opt/app/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
}
典型代码问题:
catch (Exception e) {
e.printStackTrace();
}
在高并发下:
✅ 解决:
JVM 参数类似:
-Xloggc:/var/log/gc.log
但:
-XX:+UseGCLogFileRotation✅ 推荐:
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=5
-XX:GCLogFileSize=20M
Docker 默认:
✅ 解决:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
du -sh /* 2>/dev/null
du -sh /var/log/*
watch -n 1 "ls -lh /opt/app/logs"
ps -ef | grep java
df -h
iostat -x 1
CentOS 上 Java 日志占用过高,99% 是:日志级别太低 + 没切割 + 异常狂打
如果你愿意,可以把:
发我,我可以帮你直接给一份可用配置。