温馨提示×

debian tomcat为啥宕机

小樊
51
2026-09-03 10:19:56
栏目: 智能运维

在 Debian 上 Tomcat 宕机 通常不是“Tomcat 自己想死”,而是被系统、资源或配置“弄死”的。下面按最常见原因 → 排查方法给你一个实战清单。


一、最常见原因(90% 都在这里)

1️⃣ 内存不足(OOM)

症状

  • Tomcat 突然消失
  • 日志里没有明显报错
  • 进程直接没了

排查

dmesg | grep -i tomcat
dmesg | grep -i oom

或:

journalctl -xe | grep -i kill

✅ 如果看到 Out of memory: Kill process

解决

  • 调整 JAVA_OPTS
-Xms512m -Xmx1024m
  • 减少并发
  • 加内存 / 加 swap

2️⃣ systemd 杀掉了 Tomcat

Debian 用 systemd 管理 Tomcat

常见原因

  • 超时
  • 内存超限
  • 子进程太多

查看

systemctl status tomcat9
journalctl -u tomcat9 --no-pager -n 100

典型错误

Failed with result 'timeout'
Killed by signal 9

解决 编辑:

/etc/systemd/system/tomcat9.service

加:

TimeoutStartSec=300
MemoryMax=1G

然后:

systemctl daemon-reload
systemctl restart tomcat9

3️⃣ Java 崩溃(JVM Crash)

特征

  • 生成 hs_err_pid*.log
  • 直接 core dump

查找

find / -name "hs_err_pid*"

常见原因

  • JDK bug
  • 使用 native 库(JNI)
  • 非法 JVM 参数

✅ 升级 JDK 或换 LTS 版本


4️⃣ 磁盘满了

症状

  • 日志不写
  • Tomcat 启动后立刻挂

检查

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

清理

journalctl --vacuum-size=200M
rm -f /var/log/tomcat9/*.log

5️⃣ 应用代码把 Tomcat 拖死

  • 死循环
  • 线程池爆了
  • 数据库连接泄漏

检查线程

jstack <pid>

看线程数

ps -eLf | grep java | wc -l

二、快速定位步骤(推荐顺序)

1. systemctl status tomcat9
2. journalctl -u tomcat9 -n 200
3. dmesg | grep -i kill
4. df -h
5. free -m
6. ls /var/log/tomcat9

三、如果你愿意,我可以更准确定位

你可以把以下信息发我:

  • Tomcat 版本(tomcat9 / 10?)
  • Debian 版本
  • systemctl status 输出
  • 宕机前后的日志片段

我可以直接帮你判断 是系统杀的还是应用炸的

0