温馨提示×

为何debian tomcat宕机

小樊
44
2026-10-06 12:11:40
栏目: 智能运维

Debian 上 Tomcat 宕机(进程退出、无响应、被 kill 等)是常见问题,通常不是 Tomcat 本身“无缘无故”挂掉,而是资源、配置或系统行为导致的。下面按最常见原因 → 排查方法 → 解决建议系统说明。


一、最常见原因(90% 场景)

1️⃣ 内存不足(OOM)

症状

  • Tomcat 突然消失
  • 日志里没有异常堆栈
  • 系统日志有 Out of memory 或 killed process

排查

# 系统日志
sudo journalctl -xe | grep -i "killed"
sudo dmesg | grep -i "oom"

# Tomcat 日志
tail -n 100 /var/log/tomcat*/catalina.out

解决

# 调整 JVM 内存
vi /etc/default/tomcat10  # 或 tomcat9
JAVA_OPTS="-Xms512m -Xmx1024m"

2️⃣ systemd 限制(Debian 常见坑)

Debian 用 systemd 管理 Tomcat,默认有资源限制。

常见限制

  • 最大文件数
  • 最大进程数
  • 内存上限

症状

  • 高并发时直接挂
  • 日志无报错

排查

systemctl show tomcat10 | grep -i limit

解决

sudo systemctl edit tomcat10
[Service]
LimitNOFILE=65535
LimitNPROC=65535

然后:

systemctl daemon-reload
systemctl restart tomcat10

3️⃣ 磁盘空间满

影响

  • 日志写不进去
  • Tomcat 直接崩

检查

df -h
du -sh /var/log/tomcat*

建议

  • 开启 logrotate
  • 清理旧日志

4️⃣ 应用本身问题(不是 Debian 问题)

  • 死循环
  • 线程池耗尽
  • 数据库连接泄漏

现象

  • CPU 100%
  • 请求无响应
  • 最后 OOM 或卡死

排查

top
jstack <pid>

5️⃣ 自动更新 / 重启导致

Debian 可能:

  • 自动更新 JDK
  • 重启系统
  • 升级 Tomcat
cat /var/log/apt/history.log
last reboot

二、快速定位流程(推荐)

# 1. 是否还活着
systemctl status tomcat10

# 2. 系统是否杀过
dmesg | grep -i oom

# 3. Tomcat 日志
tail -n 200 /var/log/tomcat*/catalina.out

# 4. 资源情况
free -h
df -h

三、如果你愿意,我可以更精准帮你

你可以补充:

  1. Debian 版本(11 / 12?)
  2. Tomcat 版本(9 / 10?)
  3. 宕机时日志内容(贴几行)
  4. 是否高并发 / 定时宕机

我可以直接告诉你具体是哪一种原因 + 改哪个文件。

0 踩