Debian下Tomcat故障排查清单
一 快速定位与最小复现
ps aux | grep tomcatnetstat -tulnp | grep 8080 或 lsof -i :8080tail -f /var/log/tomcat*/catalina.outgrep -i "ERROR\|SEVERE" /var/log/tomcat*/catalina.out二 常见故障与处理对照表
| 症状 | 快速检查 | 处理要点 |
|---|---|---|
| 端口被占用(Address already in use) | lsof -i :8080 或 `netstat -tulnp |
grep 8080` |
| 启动失败且无明显提示 | tail -n100 catalina.out |
检查 server.xml / web.xml / context.xml 语法与闭合;核对目录权限与依赖 |
| 管理页面 403/401 | cat /var/lib/tomcat9/conf/tomcat-users.xml |
为管理应用配置正确角色(如 manager-gui、admin-gui)与密码 |
| 控制台或请求中文乱码 | 访问日志或页面出现乱码 | 在 conf/logging.properties 设置 java.util.logging.ConsoleHandler.encoding=UTF-8;在 server.xml 的 Connector 增加 URIEncoding="UTF-8" |
| 数据库连接失败 | 日志出现连接超时/拒绝 | 核对 JDBC URL、用户名、密码、驱动 JAR;确认数据库可达与白名单 |
| 内存溢出(Heap/Metaspace) | grep -i "OutOfMemoryError" catalina.out |
调整 JAVA_OPTS:-Xms/-Xmx(堆),Java 8+ 用 -XX:MetaspaceSize/-XX:MaxMetaspaceSize;必要时分析堆转储 |
| 日志文件过大 | du -sh /var/log/tomcat* |
配置 logrotate 做按日轮转与压缩,避免磁盘被占满 |
| 部署失败(WAR 无法部署) | 查看 catalina.out 部署阶段报错 | 检查 WEB-INF/lib 依赖是否齐全、应用自身配置与 web.xml 规范 |
三 日志与配置的关键位置
systemctl status/start/stop tomcat9);环境变量与内存参数可在 /etc/default/tomcat9 或 bin/setenv.sh 中设置(如 JAVA_OPTS="-Xms512m -Xmx1024m")。四 内存与性能问题专项排查
-Xms2g -Xmx2g,Java 8+ 增加 -XX:MaxMetaspaceSize=...),并观察 GC 行为。jmap -dump:format=b,file=heap.hprof <PID> 导出堆转储,配合 VisualVM/MAT 分析泄漏点。五 一键排查命令清单
systemctl status tomcat9;ss -lntp | grep 8080 或 lsof -i :8080tail -f /var/log/tomcat*/catalina.out;grep -i "ERROR\|SEVERE" /var/log/tomcat*/catalina.*cat /var/lib/tomcat9/conf/server.xml | grep -n "Connector\|Host";ls -ld /var/log/tomcat* /var/lib/tomcat9 /usr/share/tomcat9ps -ef | grep tomcat;jinfo -flags <PID>;jmap -heap <PID>;jstat -gc <PID> 1s 10systemctl stop tomcat9;备份并替换 /var/lib/tomcat9/webapps/ROOT.war;systemctl start tomcat9;tail -f catalina.out 观察部署结果。