Debian下Tomcat如何故障排查
导读:Debian下Tomcat故障排查清单 一 快速定位与最小复现 确认服务状态与端口:使用命令查看 Tomcat 是否运行、端口是否被占用,例如: 查看进程:ps aux | grep tomcat 查看端口:netstat -tulnp...
Debian下Tomcat故障排查清单
一 快速定位与最小复现
- 确认服务状态与端口:使用命令查看 Tomcat 是否运行、端口是否被占用,例如:
- 查看进程:
ps aux | grep tomcat - 查看端口:
netstat -tulnp | grep 8080或lsof -i :8080
- 查看进程:
- 查看实时日志:优先看 catalina.out 与 localhost.<
日期>
.log,定位启动失败或运行期异常:
tail -f /var/log/tomcat*/catalina.outgrep -i "ERROR\|SEVERE" /var/log/tomcat*/catalina.out
- 检查配置文件语法与关键端口:重点核对 server.xml 中的 Connector port=“8080” 与协议、路径等;若端口冲突,先停占用进程或修改端口后重启。
- 环境变量与版本匹配:确认 JAVA_HOME 指向 JDK(而非仅 JRE),并且 Tomcat 版本与 JDK 版本兼容;必要时调整 JAVA_OPTS 的内存参数。
二 常见故障与处理对照表
| 症状 | 快速检查 | 处理要点 |
|---|---|---|
| 端口被占用(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 规范 |
三 日志与配置的关键位置
- 日志目录:通常为 /var/log/tomcat/ 或 $CATALINA_HOME/logs/;核心文件包括 catalina.out、localhost.< 日期> .log、访问日志(AccessLog,路径由 server.xml 的 AccessLogValve 决定)。
- 配置文件:server.xml(连接器端口、协议、编码)、web.xml(应用级配置)、context.xml(上下文与资源)、logging.properties(日志级别与编码)。
- 服务与环境:Debian 包安装常见服务名为 tomcat9(命令:
systemctl status/start/stop tomcat9);环境变量与内存参数可在 /etc/default/tomcat9 或 bin/setenv.sh 中设置(如JAVA_OPTS="-Xms512m -Xmx1024m")。
四 内存与性能问题专项排查
- 堆与元空间:当出现 OutOfMemoryError: Java heap space 或 Metaspace 不足,先增大堆与非堆上限(如
-Xms2g -Xmx2g,Java 8+ 增加-XX:MaxMetaspaceSize=...),并观察 GC 行为。 - 现场诊断:使用 jmap -heap 查看堆配置与使用情况;必要时
jmap -dump:format=b,file=heap.hprof < PID>导出堆转储,配合 VisualVM/MAT 分析泄漏点。 - GC 与监控:结合 jstat -gc 观察 GC 频率与停顿;用 jconsole/JVisualVM 远程或本地连入观察线程、类加载与内存曲线。
- 请求风暴与异常输入:异常或恶意请求可能触发大量日志与对象分配,导致 CPU/内存飙升;应加固输入校验、启用访问限制与速率控制,并优化日志级别以减少开销。
五 一键排查命令清单
- 服务与端口:
systemctl status tomcat9;ss -lntp | grep 8080或lsof -i :8080 - 日志定位:
tail -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/tomcat9 - JVM 与内存:
ps -ef | grep tomcat;jinfo -flags < PID>;jmap -heap < PID>;jstat -gc < PID> 1s 10 - 部署与回滚:
systemctl stop tomcat9;备份并替换 /var/lib/tomcat9/webapps/ROOT.war;systemctl start tomcat9;tail -f catalina.out观察部署结果。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian下Tomcat如何故障排查
本文地址: https://pptw.com/jishu/770535.html
