温馨提示×

Tomcat在Debian中的故障排查

小樊
43
2025-11-30 04:16:47
栏目: 智能运维

Debian 上 Tomcat 故障排查清单

一 快速定位与通用检查

  • 查看服务状态与日志
    • 使用 systemd:执行 systemctl status tomcat9(或 tomcat8/tomcat7),从输出中确认是否 active (running)、是否 failed,并查看最近的 journalctl -u tomcat9 -xe 日志片段。
    • 查看关键日志:优先检查 /var/log/tomcat9/catalina.out(启动与致命错误)、/var/log/tomcat9/localhost.<日期>.log(应用部署与初始化)、以及 /var/log/tomcat9/access.<日期>.log(访问日志)。使用 tail -f 实时跟踪最新输出。
  • 确认进程与端口
    • 进程:执行 ps aux | grep tomcat 确认 java 进程是否存在且以 tomcat 用户运行。
    • 端口:执行 ss -tulnp | grep ‘:8080|:8005|:8009’ 检查 HTTP 8080SHUTDOWN 8005AJP 8009 是否被占用;若被占用,记录 PID 以便处理。
  • 配置与环境
    • 配置文件:/etc/tomcat9/server.xml(连接器端口、协议、编码、Host/Context)、/etc/default/tomcat9(环境变量如 JAVA_HOME/JAVA_OPTS、内存、用户等)。
    • 环境变量:确保 JAVA_HOME 指向 JDK 安装目录(如 /usr/lib/jvm/default-java),并且 PATH 包含 $JAVA_HOME/bin
  • 文件权限与目录
    • 确认 /var/log/tomcat9/var/lib/tomcat9/usr/share/tomcat9 等目录属主为 tomcat:tomcat,权限合理(日志可写、工作目录可读写)。

二 常见故障与修复对照表

症状 快速检查 修复建议
启动失败或进程秒退 查看 catalina.out 首屏报错;检查 JAVA_HOME/etc/default/tomcat9 修正 JAVA_HOME;在 /etc/default/tomcat9 设置合适的 JAVA_OPTS(如 -Xms512m -Xmx1024m);修复 server.xml 语法错误后重启
端口被占用(8080/8005/8009) **ss -tulnp grep ‘:8080|:8005|:8009’**
管理页面 403/401 或无法登录 查看 tomcat-users.xml 角色与用户 /etc/tomcat9/tomcat-users.xml 配置如 manager-gui/admin-gui 角色与用户,注意服务重启后生效
部署 WAR 后 404 检查 webapps 是否解压出目录;确认 Context 路径 确认 WAR 已上传且解压;必要时在 server.xml 或应用目录设置正确 path;查看应用自身日志
控制台或请求中文乱码 查看日志与浏览器编码 conf/logging.properties 设置 java.util.logging.ConsoleHandler.encoding=UTF-8;在 server.xml 增加 URIEncoding=“UTF-8”
内存不足或频繁 Full GC catalina.out 出现 OutOfMemoryError /etc/default/tomcat9bin/setenv.sh 提升堆内存(如 -Xms1g -Xmx2g),并分析应用内存泄漏
权限错误(无法写日志/无法部署) 检查目录属主与权限 /var/log/tomcat9/var/lib/tomcat9/work 等目录属主设为 tomcat:tomcat,确保可写
配置文件错误导致无法启动 启动日志含 SEVERE 指向 server.xml/web.xml 使用 xmlstarlet 或 IDE 校验 XML 结构;回滚最近变更并逐步恢复配置
应用启动慢或卡死 检查线程、连接池、数据库与依赖 调整 server.xml 线程与超时;优化 JDBC 连接池;排查应用依赖与初始化逻辑

以上对照要点涵盖了 端口冲突配置错误权限不足内存不足部署失败 等高频问题及处置路径。

三 关键配置文件与路径

  • 环境与内存
    • /etc/default/tomcat9:设置 JAVA_HOMEJAVA_OPTS(如 -Xms512m -Xmx1024m)、CATALINA_HOME/CATALINA_BASE、运行用户等。
    • 可选:在 /usr/share/tomcat9/bin/setenv.sh 中导出自定义变量(若不存在可创建)。
  • 主配置
    • /etc/tomcat9/server.xml 路径与部署方式。
  • 日志
    • /var/log/tomcat9/catalina.outlocalhost.<日期>.logaccess.<日期>.log;必要时检查 conf/logging.properties 的编码与日志级别。
  • 用户与权限
    • /etc/tomcat9/tomcat-users.xml:配置 manager-gui/admin-gui 等角色与用户;确保与 /etc/default/tomcat9 的运行用户一致。
  • 应用部署
    • /var/lib/tomcat9/webapps/(自动解压 WAR)、/var/lib/tomcat9/conf/Catalina/localhost/(外部 Context 配置)。

四 重启与验证

  • 重启服务
    • 使用 systemd:sudo systemctl restart tomcat9;重启后用 systemctl status tomcat9journalctl -u tomcat9 -xe 复核状态与日志。
  • 验证访问
    • 访问 http://服务器IP:8080/http://服务器IP:8080/manager/html(若启用管理应用),确认返回 200 页面;必要时查看 access.log 的请求记录。

0