温馨提示×

Ubuntu Tomcat故障排查步骤

小樊
38
2025-12-19 22:29:03
栏目: 智能运维

Ubuntu Tomcat故障排查步骤

一 快速判定与日志定位

  • 确认运行状态与日志路径
    • 查看进程:ps -ef | grep tomcat
    • 查看监听端口:ss -ltnp | grep 8080lsof -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:8080netstat -anp | grep 8080
    • 处理:释放端口或调整 server.xmlConnector port
  • Java 环境问题
    • 检查:java -versionwhich java
    • 处理:安装匹配版本的 JDK,并正确设置 JAVA_HOME/JRE_HOME(系统服务与手动启动的环境可能不同)。
  • 版本不匹配
    • 处理:确认 TomcatJDK 版本兼容(如 JDK 8 对应较新的 Tomcat 9)。
  • 配置错误
    • 重点检查:conf/server.xmlweb.xmlcontext.xml 等是否存在语法或路径错误。
  • 权限问题
    • 现象:部署/解压失败、文件无法写入。
    • 处理:核对 $CATALINA_HOMEwebappslogs 等目录属主与权限,避免使用危险的 777
  • 资源不足
    • 检查:free -mdf -htop;必要时扩容或优化应用。
  • 安装包错误
    • 现象:启动报 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 的 addressscheme(如需对外访问,避免仅绑定 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 8080lsof -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

0