在 Debian 上排查 Tomcat 内存溢出(OutOfMemoryError),通常可以从以下几个地方找日志和线索。
Tomcat 的标准输出和错误都会写到这里。
路径通常是:
/var/log/tomcat9/catalina.out
(版本不同可能是 tomcat8、tomcat10)
查看内存溢出信息:
grep -i "OutOfMemory" /var/log/tomcat9/catalina.out
或直接看末尾:
tail -n 200 /var/log/tomcat9/catalina.out
典型错误示例:
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: GC overhead limit exceeded
java.lang.OutOfMemoryError: Metaspace
/var/log/tomcat9/catalina.2026-01-21.log
内容比 catalina.out 精简,但也会记录启动和严重错误。
应用级别的异常:
/var/log/tomcat9/localhost.2026-01-21.log
如果 Tomcat 是通过 systemctl 启动的:
journalctl -u tomcat9
只看错误:
journalctl -u tomcat9 | grep -i "outofmemory"
实时查看:
journalctl -u tomcat9 -f
如果配置了:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/tomcat9/
会在目录下生成:
/var/log/tomcat9/java_pid*.hprof
JVM 崩溃时会生成:
hs_err_pid*.log
一般在 Tomcat 启动目录或 /var/lib/tomcat9/
dpkg -l | grep tomcat
ls /var/log/tomcat*
| 错误 | 含义 |
|---|---|
| Java heap space | 堆内存不足 |
| GC overhead limit exceeded | GC 频繁但回收少 |
| Metaspace | 类加载过多 |
| Unable to create new native thread | 线程数过多 |
如果你愿意,可以把 具体的 OutOfMemoryError 类型 或 catalina.out 片段贴出来,我可以帮你判断是堆、元空间还是线程问题,并给出 JVM 参数建议。