Tomcat的日志是故障排查的核心依据,其中catalina.out(主日志,记录启动/运行全过程)、localhost.log(应用部署日志)、localhost_access_log.*.txt(访问日志)是最关键的文件。
tail -f $TOMCAT_HOME/logs/catalina.out实时查看最新日志(适用于启动失败或运行中报错);$TOMCAT_HOME/logs目录权限(确保Tomcat用户有写入权限),或手动运行$CATALINA_HOME/bin/startup.sh观察终端输出。Tomcat依赖JDK运行,需确保以下配置正确:
java -version,确认安装的JDK版本与Tomcat兼容(如Tomcat 9需JDK 8+,Tomcat 10需JDK 11+);echo $JAVA_HOME,确认变量指向JDK安装目录(如/usr/lib/jvm/java-11-openjdk);若未设置,需在/etc/profile或~/.bashrc中添加:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
然后执行source /etc/profile使配置生效。Tomcat默认使用8080(HTTP)、8005(Shutdown)、**8009(AJP)**端口,若这些端口被其他进程占用,会导致启动失败。
netstat -tuln | grep 端口号(如netstat -tuln | grep 8080)或ss -tunlp | grep java查看端口占用情况;kill -9 <PID>(PID为lsof -i :8080输出的进程ID);$CATALINA_HOME/conf/server.xml,找到<Connector port="8080">标签,将端口号改为未被占用的值(如8081),保存后重启Tomcat。Tomcat的核心配置文件(如server.xml、web.xml)若存在语法错误或配置不当,会导致启动失败。
<Connector>标签的端口、协议(如protocol="HTTP/1.1")、redirectPort(如redirectPort="8443")配置;<servlet>、<filter>配置是否正确;xmllint --noout $CATALINA_HOME/conf/server.xml验证XML语法。系统资源不足(如内存、磁盘空间)会导致Tomcat无法启动或运行缓慢。
free -m,确认系统剩余内存(建议预留1GB以上给Tomcat);df -h,确认/分区剩余空间(建议保留10%以上);top,确认CPU使用率(若长期超过80%,需优化应用或升级硬件)。若出现java.lang.OutOfMemoryError: Java heap space(堆内存溢出)或java.lang.OutOfMemoryError: PermGen space(永久代溢出)错误,需调整JVM内存参数。
$CATALINA_HOME/bin/catalina.sh(Linux)或catalina.bat(Windows),在文件开头添加以下内容(根据服务器配置调整数值):JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m -XX:MaxMetaspaceSize=256m"
其中:
-Xms:初始堆内存(如512MB);-Xmx:最大堆内存(如1024MB);-XX:MaxPermSize:永久代最大大小(适用于Tomcat 8及以下,Tomcat 9及以上需用-XX:MaxMetaspaceSize);-XX:MaxMetaspaceSize:元空间最大大小(Tomcat 9+)。CentOS默认启用SELinux,可能会阻止Tomcat访问文件或端口。
sestatus,若显示Enforcing(启用),需临时禁用(测试用):sudo setenforce 0;/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后重启服务器。CentOS防火墙(firewalld)可能会阻止Tomcat的端口访问。
sudo firewall-cmd --list-all,确认是否放行Tomcat端口(如8080);sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent,然后重新加载防火墙:sudo firewall-cmd --reload。确认Tomcat是否已成功启动:
ps aux | grep tomcat查看Tomcat进程(若存在org.apache.catalina.startup.Bootstrap进程,说明已启动);$CATALINA_HOME/bin/startup.sh,观察终端输出是否有错误信息。若Tomcat启动后无法访问应用(如404 Not Found或应用无法加载),需检查应用部署情况:
$CATALINA_HOME/webapps目录,确认应用WAR包或目录是否存在;logs/localhost.log,确认应用部署是否有错误(如SEVERE [main] org.apache.catalina.startup.HostConfig.deployDirectory Error deploying web application directory);webapps目录下所有内容,重新部署应用。