Ubuntu Tomcat故障排查步骤
小樊
38
2025-12-19 22:29:03
Ubuntu Tomcat故障排查步骤
一 快速判定与日志定位
- 确认运行状态与日志路径
- 查看进程:ps -ef | grep tomcat
- 查看监听端口:ss -ltnp | grep 8080 或 lsof -i:8080
- 查看日志:
- 系统包安装:/var/log/tomcat9/catalina.out
- 手动解压安装:$CATALINA_HOME/logs/catalina.out
- 实时跟踪:tail -f catalina.out;关键字过滤:grep -i “ERROR|SEVERE” catalina.out
- 访问日志与事件日志位于同一 logs 目录,可辅助判断部署与访问链路。
二 常见故障与处理清单
- 端口被占用
- 定位进程:lsof -i:8080 或 netstat -anp | grep 8080
- 处理:释放端口或调整 server.xml 的 Connector port。
- Java 环境问题
- 检查:java -version、which java
- 处理:安装匹配版本的 JDK,并正确设置 JAVA_HOME/JRE_HOME(系统服务与手动启动的环境可能不同)。
- 版本不匹配
- 处理:确认 Tomcat 与 JDK 版本兼容(如 JDK 8 对应较新的 Tomcat 9)。
- 配置错误
- 重点检查:conf/server.xml、web.xml、context.xml 等是否存在语法或路径错误。
- 权限问题
- 现象:部署/解压失败、文件无法写入。
- 处理:核对 $CATALINA_HOME、webapps、logs 等目录属主与权限,避免使用危险的 777。
- 资源不足
- 检查:free -m、df -h、top;必要时扩容或优化应用。
- 安装包错误
- 现象:启动报 ClassNotFound: org.apache.catalina.startup.Bootstrap。
- 处理:下载并使用 Binary Distributions 而非 Source Code 包。
三 无法访问页面的网络排查
- 本机可达性:在服务器上 curl http://localhost:8080 验证服务是否正常响应。
- 远程连通性:ping 服务器IP;必要时测试其它端口/协议。
- 防火墙与安全组:
- Ubuntu 本地:sudo ufw status,按需 sudo ufw allow 8080/tcp
- 云主机:开放安全组 8080/TCP 入方向。
- 监听地址:确认 server.xml 中 Connector 的 address 与 scheme(如需对外访问,避免仅绑定 127.0.0.1)。
- 浏览器与缓存:更换浏览器/隐私模式,或 curl -v 查看 HTTP 细节。
四 日志与配置的深度检查
- 日志级别与输出
- 调整 conf/logging.properties(如将某些包提升到 FINE/DEBUG),或设置 JVM 参数:-Djava.util.logging.ConsoleHandler.level=FINE。
- 实时排查:tail -f catalina.out | grep -i error。
- 访问与事件日志
- 访问日志可确认请求是否到达、返回码(如 200/404/500),事件日志用于核对启动/部署事件。
- 配置文件语法
- 重点核对 server.xml 的端口、协议、线程池、连接器与 Host/Context 配置;变更前先备份。
- JVM 与内存
- 在 setenv.sh(若不存在可创建)中设置:JAVA_OPTS=“-Xms512m -Xmx1024m”,缓解 OutOfMemoryError。
五 一键排查命令清单
- 查看状态与端口
- ps -ef | grep tomcat
- ss -ltnp | grep 8080 或 lsof -i:8080
- 查看日志
- tail -n50 -f /var/log/tomcat9/catalina.out(系统包)
- tail -n50 -f $CATALINA_HOME/logs/catalina.out(手动安装)
- grep -i “ERROR|SEVERE” $CATALINA_HOME/logs/catalina.out
- Java 与网络
- java -version && which java
- curl -v http://localhost:8080
- ping 服务器IP
- sudo ufw status 与(如需)sudo ufw allow 8080/tcp
- 资源与权限
- free -m && df -h && top
- 核对目录权限(如 webapps/ logs/)与属主,避免使用 777。