温馨提示×

Debian Tomcat故障排查步骤

小樊
40
2025-11-22 06:12:23
栏目: 智能运维

Debian Tomcat故障排查步骤

一 快速定位与日志分析

  • 确认日志目录:Tomcat 日志通常在 /var/log/tomcat/<TOMCAT_HOME>/logs/。常见文件包括:catalina.out(启动/运行输出与错误)、localhost..log(应用部署与初始化)、localhost_access_log..txt(访问日志)、以及管理应用的 manager.log/host-manager.log
  • 实时查看与检索:使用命令快速定位问题,例如:
    • 实时跟踪:tail -f /var/log/tomcat/catalina.out
    • 关键字过滤:grep -i 'ERROR\|Exception\|Failed' /var/log/tomcat/catalina.out
  • 分析要点:优先关注日志中的 ERROR/SEVERE 级别与异常堆栈,结合时间戳定位触发点;访问日志可用于核对请求是否到达与返回码。

二 服务状态与端口检查

  • 服务状态与系统日志:
    • 查看状态:sudo systemctl status tomcat9(Debian 常见包名为 tomcat9
    • 查看详细错误:sudo journalctl -xe
  • 端口占用:
    • 检查端口:sudo netstat -tulpen | grep 8080lsof -i:8080
    • 处理占用:结束进程 sudo kill -9 <PID>,或调整 server.xmlConnector port=“8080” 为未占用端口(如 8081)。
  • 验证监听:确认 Tomcat 已在目标端口监听后再进行访问测试。

三 环境与配置核查

  • Java 环境:
    • 版本与路径:java -versionwhich java
    • 环境变量:确保 JAVA_HOME 指向 JDK 安装目录(如 /usr/lib/jvm/default-java),并在需要时设置 CATALINA_HOME/CATALINA_BASE
  • 版本匹配:JDK 版本需与 Tomcat 版本兼容,版本不符会导致启动或运行异常。
  • 配置文件:检查 conf/server.xml(如 Connector 端口、协议、重定向端口)、以及 context.xml/web.xml 是否存在语法或配置错误。
  • JVM 内存:在 bin/setenv.sh 或系统环境(如 /etc/default/tomcat9)中设置 JAVA_OPTS,例如:-Xms512M -Xmx1024M,避免内存不足引发失败或性能问题。
  • 权限与目录:确保 Tomcat 运行用户conf、logs、webapps、temp、work 等目录具备读写权限。

四 应用部署与运行期问题

  • 部署故障:检查应用包(WAR)是否完好、依赖是否齐全(位于 WEB-INF/lib)、以及 web.xml 配置是否正确;查看 localhost.log 中应用初始化异常。
  • 访问异常:出现 404 时核对应用的 Context Path、资源路径与默认首页;必要时检查 server.xmlHost/Context 配置。
  • 字符编码:若页面出现中文乱码,在 Connector 上设置 URIEncoding=“UTF-8” 并保持应用编码一致。
  • 内存与线程:若响应变慢或报 OutOfMemoryError,调整 JAVA_OPTS 堆大小,并使用 jmap 生成堆转储、jstack <PID> 获取线程转储进行分析。

五 一键式排查清单与修复建议

症状 快速检查 修复建议
启动失败(服务起不来) systemctl status tomcat9journalctl -xecatalina.out 首屏报错 依据日志修复配置/权限/依赖;确保 JAVA_HOME 正确;必要时调整内存参数
端口占用无法启动 `netstat -tulpen grep 8080lsof -i:8080`
页面访问 404 访问日志、应用 web.xml、应用是否部署成功 校正 Context Path 与资源路径,确认 WAR 已解包并部署
启动慢或内存溢出 catalina.out 中 OOM、jmap/jstack 分析 增大堆内存、优化应用对象生命周期、排查内存泄漏
管理应用不可用 manager.log/host-manager.log 检查 tomcat-users.xml 角色与权限配置是否正确

0