在 Debian 上运行 Tomcat 时,日志写入变慢通常不是单一原因,而是系统、Tomcat 配置或应用行为共同作用的结果。下面按常见原因 → 排查方法 → 解决建议来说明。
java.util.logging 或 ConsoleHandler)Debian 上 Tomcat 默认:
systemd 或 catalina.sh 重定向问题:
✅ 验证:
ps -ef | grep tomcat
ls -l /var/log/tomcat*/catalina.out
如果应用或框架开了:
logging.level.root=DEBUG
会:
✅ 检查:
grep -R "DEBUG" /etc/tomcat*/
grep -R "level" /opt/tomcat/conf/
常见场景:
✅ 检查 IO:
iostat -x 1
iotop
df -h
catalina.out 无限增长(未轮转)Debian 默认 不自动轮转 catalina.out
后果:
✅ 检查:
ls -lh /var/log/tomcat*/catalina.out
Debian 使用 systemd 启动 Tomcat:
journalctl -u tomcat
如果:
会造成 双重写日志
AccessLog<Valve className="org.apache.catalina.valves.AccessLogValve"
buffered="false" />
buffered=false 会严重拖慢性能
✅ 建议:
buffered="true"
混合使用:
可能导致:
jstack <tomcat_pid> | grep -A 10 "log"
如果看到:
FileOutputStream.write
BufferedWriter.write
说明线程在等日志 IO
iostat -x 1
%util 接近 100% → 磁盘瓶颈
du -sh /var/log/tomcat*
/etc/logrotate.d/tomcat
示例:
/var/log/tomcat*/catalina.out {
daily
rotate 7
copytruncate
compress
missingok
}
不要直接写 catalina.out
logback 示例:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/tomcat/app.log</file>
</appender>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE"/>
</appender>
Tomcat:
CATALINA_OUT=/dev/null
或:
<ConsoleHandler/>
删除
Debian 上 Tomcat 日志变慢,90% 是因为:catalina.out 同步写 + 不轮转 + 磁盘 IO 慢
如果你愿意,可以贴:
iostat / jstack 片段我可以帮你精确定位是哪一类问题。