Tomcat的日志是故障排查的核心依据,主要日志文件位于$TOMCAT_HOME/logs目录下,包括:
查看方法:
tail -f $TOMCAT_HOME/logs/catalina.out(按Ctrl+C停止);grep -i "error" $TOMCAT_HOME/logs/catalina.out;journalctl -u tomcat.service -f(替换tomcat.service为实际服务名)。Tomcat依赖Java环境运行,需确保以下配置正确:
java -version,确认安装的Java版本符合Tomcat要求(如Tomcat 10需Java 11+);echo $JAVA_HOME,若未设置或路径错误,需在~/.bashrc或/etc/profile中添加:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk(路径以实际为准),并执行source ~/.bashrc生效。Tomcat默认使用8080(HTTP)、8005(关闭端口)、**8009(AJP)**等端口,若端口被占用,会导致启动失败或无法访问。
netstat -tuln | grep 端口号(如netstat -tuln | grep 8080);lsof -i:端口号获取进程ID(PID),再用kill -9 PID终止进程;$TOMCAT_HOME/conf/server.xml,找到<Connector port="8080">标签,修改port值为未使用的端口(如8081),保存后重启Tomcat。Tomcat的核心配置文件位于$TOMCAT_HOME/conf目录,常见错误包括语法错误、路径错误或参数配置不当:
<Connector>标签的端口、协议(如org.apache.coyote.http11.Http11NioProtocol)是否正确,<Context>路径是否指向有效应用目录;<Resource>标签)的URL、用户名、密码是否正确,驱动路径是否存在。系统资源不足会导致Tomcat启动失败或运行缓慢:
df -h查看磁盘使用率,若/分区使用率超过80%,需清理日志文件($TOMCAT_HOME/logs)或其他大文件;free -m查看内存使用情况,若可用内存不足,需调整Tomcat的JVM堆内存参数(编辑$TOMCAT_HOME/bin/catalina.sh,添加JAVA_OPTS="-Xms512m -Xmx1024m",其中-Xms为初始堆大小,-Xmx为最大堆大小);top查看CPU使用率,若某进程占用过高,可通过kill命令终止异常进程。Tomcat需要对相关文件和目录具有读写权限,否则会导致启动失败或功能异常:
/opt/tomcat)及子目录(logs、webapps、conf)的所有者为Tomcat运行用户(通常为tomcat),执行chown -R tomcat:tomcat /opt/tomcat;$TOMCAT_HOME/logs目录可写,执行chmod -R 755 $TOMCAT_HOME/logs;$TOMCAT_HOME/webapps目录可写,以便应用能正常部署。firewalld或iptables),需放行Tomcat使用的端口(如8080),执行:sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent # 放行端口
sudo firewall-cmd --reload # 重新加载防火墙规则
getenforce返回Enforcing),可能会阻止Tomcat访问网络或文件,可临时禁用(测试用):sudo setenforce 0,或修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive(需重启系统生效)。若Tomcat运行缓慢或出现卡死,需分析线程状态:
jstack命令获取线程快照(需知道Tomcat的PID,可通过ps -ef | grep java获取),执行:jstack PID > thread_dump.txt,分析文件中的“deadlock”(死锁)或“BLOCKED”(阻塞)线程;http://ip:8080/manager/html)查看线程池状态(如活跃线程数、任务队列长度),若活跃线程数接近最大线程数(maxThreads,默认200),需调整server.xml中的<Connector>标签的maxThreads参数(如maxThreads="500")。若应用无法正常运行,需检查以下内容:
WEB-INF/lib目录下包含应用所需的所有JAR包(如数据库驱动、第三方框架),无缺失或版本冲突;$TOMCAT_HOME/webapps目录,且WAR包已解压(若未解压,可手动解压或重启Tomcat);web.xml、application.properties),确认数据库连接、接口地址等配置正确。通过以上步骤逐步排查,可定位并解决CentOS系统下Tomcat的常见故障。若问题仍未解决,建议结合日志中的具体错误信息,在Tomcat官方论坛或社区寻求帮助。