温馨提示×

tomcat内存溢出debian日志

小樊
35
2026-09-07 09:07:33
栏目: 智能运维

在 Debian 上运行 Tomcat 时,如果出现内存溢出(OutOfMemoryError),通常需要从以下几个地方排查日志。


一、Tomcat 自身日志(最常见)

1. catalina.out(最重要)

路径一般在:

/var/log/tomcat9/catalina.out
# 或
/opt/tomcat/logs/catalina.out

查看内存溢出信息:

grep -i "OutOfMemory" /var/log/tomcat9/catalina.out

典型错误示例:

java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: GC overhead limit exceeded
java.lang.OutOfMemoryError: Metaspace
java.lang.OutOfMemoryError: unable to create new native thread

2. catalina.yyyy-mm-dd.log

/var/log/tomcat9/catalina.2026-01-21.log

作用:记录 Tomcat 启动、关闭、异常信息。


3. localhost.yyyy-mm-dd.log

/var/log/tomcat9/localhost.2026-01-21.log

作用:Web 应用级别异常(如 Servlet、Listener 错误)。


二、系统日志(Debian)

1. journalctl(推荐)

journalctl -u tomcat9

或实时查看:

journalctl -u tomcat9 -f

2. syslog / messages

/var/log/syslog

可能看到:

  • OOM Killer 杀进程
  • 内存不足导致 Tomcat 被终止

搜索:

grep -i "out of memory" /var/log/syslog
grep -i "killed process" /var/log/syslog

三、生成堆转储(Heap Dump)分析

1. 配置 JVM 参数(推荐)

编辑 Tomcat 的 JVM 配置(Debian 通常在):

/etc/default/tomcat9

/etc/tomcat9/tomcat9.conf

添加:

JAVA_OPTS="-Xms512m -Xmx1024m \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/var/log/tomcat9/heapdump.hprof"

重启 Tomcat:

systemctl restart tomcat9

2. 使用 jmap 手动导出

jmap -dump:live,format=b,file=/tmp/tomcat.hprof <pid>

四、常见内存溢出类型与处理

类型 原因 解决
Java heap space 堆内存不足 增大 -Xmx
Metaspace 类加载过多 增大 -XX:MaxMetaspaceSize
GC overhead 频繁 GC 优化代码 / 增大内存
native thread 线程过多 限制线程数

五、快速排查命令

# 查看 Tomcat 进程内存
ps aux | grep tomcat

# 查看 JVM 内存
jstat -gc <pid>

# 查看线程数
ps -eLf | grep <pid> | wc -l

如果你愿意,可以把 catalina.out 中的 OutOfMemoryError 片段Tomcat 版本 发给我,我可以帮你精确判断是堆、元空间还是线程问题。

0