温馨提示×

debian tomcat日志为何重启

小樊
38
2026-09-13 07:22:19
栏目: 智能运维

在 Debian 上运行 Tomcat 时,如果发现Tomcat 自己重启(或进程被重启),常见原因可以分为 系统层、服务管理层、应用层、资源层 几类。下面按出现频率给你一个排查清单。


一、最常见原因:systemd 自动重启

Debian 通常使用 systemd 管理 Tomcat。

1. Tomcat 服务配置导致自动重启

查看服务文件:

systemctl cat tomcat9

重点看:

Restart=always
RestartSec=5

如果 Restart=always只要 Tomcat 进程退出,systemd 就会重启它

✅ 检查方法:

journalctl -u tomcat9 --since "1 hour ago"

如果你看到:

tomcat9.service: Main process exited, code=exited, status=1
tomcat9.service: Scheduled restart job

说明是 systemd 重启了 Tomcat,不是 Tomcat 自己重启。


二、OOM(内存不足)被系统杀掉

这是非常常见原因。

2. Linux OOM Killer 杀掉 Tomcat

查看内核日志:

dmesg | grep -i "killed process"

或:

journalctl -k | grep -i oom

如果看到 javatomcat 被 kill,说明是 内存不足

✅ 解决方向:

  • 调整 JVM 内存:
    /etc/default/tomcat9
    JAVA_OPTS="-Xms512m -Xmx1024m"
    
  • 增加系统内存 / 交换分区

三、Tomcat 本身崩溃

3. JVM Crash(hs_err 日志)

JVM 崩溃会生成:

/var/log/tomcat9/hs_err_pid*.log

原因可能包括:

  • JDK bug
  • native 库问题(JNI)
  • 极端并发

四、应用导致 Tomcat 退出

4. Web 应用调用 System.exit()

某些错误代码:

System.exit(1);

会直接杀掉整个 Tomcat。

✅ 排查:

  • 查看应用日志
  • 搜索 System.exit

五、定时任务或脚本重启

5. cron / 运维脚本

检查:

crontab -l
ls /etc/cron.*

有可能存在:

0 3 * * * systemctl restart tomcat9

六、watchdog / 监控工具

如:

  • supervisor
  • monit
  • kubernetes liveness probe

七、日志轮转误杀

7. logrotate 配置错误

错误示例:

postrotate
  kill -9 tomcat

应是用 systemctl reloadSIGUSR1


快速定位步骤(推荐)

# 1. 看 systemd 日志
journalctl -u tomcat9 -n 200

# 2. 看内核是否 OOM
dmesg | grep -i oom

# 3. 看 Tomcat 日志
ls -lh /var/log/tomcat9/
tail -n 200 /var/log/tomcat9/catalina.out

# 4. 看服务配置
systemctl cat tomcat9

如果你愿意,可以把下面信息发我,我可以精准判断:

  1. Debian 版本
  2. Tomcat 版本
  3. systemctl cat tomcat9 内容
  4. 重启前后 journalctl -u tomcat9 日志片段

我可以直接帮你定位是 谁重启了 Tomcat

0