Tomcat的日志是故障排查的核心依据,主要日志文件位于$CATALINA_HOME/logs目录下(CATALINA_HOME为Tomcat安装目录),其中catalina.out记录了启动、运行及关闭的全过程日志,localhost.log包含应用程序相关的本地信息。
tail -f $CATALINA_HOME/logs/catalina.out命令,可动态跟踪最新日志输出,快速定位错误发生时间点。grep命令筛选特定错误类型,例如grep 'ERROR' $CATALINA_HOME/logs/catalina.out(显示所有错误信息)、grep 'java.net.BindException' $CATALINA_HOME/logs/catalina.out(排查端口冲突)。Tomcat默认使用8080(HTTP)、8005(关闭端口)、8009(AJP)等端口,若这些端口被其他进程占用,会导致Tomcat无法启动。
sudo netstat -tulnp | grep <端口号>(如sudo netstat -tulnp | grep 8080),输出中会显示占用端口的进程ID(PID)和名称(如apache2、nginx)。kill -9 <PID>终止该进程(需确认进程无重要功能);server.xml文件(位于$CATALINA_HOME/conf),调整端口配置(如将<Connector port="8080">改为<Connector port="8081">)。Tomcat依赖Java运行环境(JRE/JDK),若Java未正确安装或环境变量未配置,会导致启动失败。
java -version和javac -version,确认已安装JDK(需显示版本号,如openjdk version "11.0.20")。echo $JAVA_HOME,应输出Java安装路径(如/usr/lib/jvm/java-11-openjdk-amd64);echo $JRE_HOME,应输出JRE路径(如/usr/lib/jvm/java-11-openjdk-amd64/jre);echo $PATH,应包含Java的bin目录(如/usr/lib/jvm/java-11-openjdk-amd64/bin)。~/.bashrc(用户级)或/etc/profile(系统级)文件,添加以下内容:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
保存后运行source ~/.bashrc(或source /etc/profile)使配置生效。Tomcat的配置文件(如server.xml、web.xml、context.xml)若存在语法错误或参数配置不当,会导致启动失败或功能异常。
xmllint工具验证XML文件语法,例如xmllint --noout $CATALINA_HOME/conf/server.xml,若输出“validates”则表示语法正确。server.xml中的<Connector>标签参数错误(如port值非数字、protocol类型不支持);web.xml中的<servlet-mapping>路径冲突;context.xml中的数据库连接池配置错误(如url、username、password不正确)。Tomcat需要对安装目录、日志目录、web应用目录具有读写权限,若权限不足,会导致启动失败或无法访问资源。
tomcat),并赋予755权限(所有者可读写执行,其他用户可读执行):sudo chown -R tomcat:tomcat $CATALINA_HOME
sudo chmod -R 755 $CATALINA_HOME
logs)和临时目录(如temp)需赋予777权限(允许所有用户写入),但生产环境中建议限制为特定用户。系统资源不足(如内存、磁盘空间)会导致Tomcat无法启动或运行缓慢。
free -m,查看可用内存(available列),若可用内存小于Tomcat配置的-Xmx(最大堆内存),需释放内存或增加-Xmx值(如-Xmx1024m)。df -h,查看根分区(/)的使用率,若超过80%,需清理无用文件(如旧日志、临时文件)。top或htop,查看CPU使用率,若长期超过80%,需优化应用程序或升级硬件。Tomcat的内存配置(JVM参数)直接影响其性能,若内存不足,会导致OutOfMemoryError(OOM)错误。
$CATALINA_HOME/bin/catalina.sh文件,在文件开头添加以下内容(根据服务器内存调整):export JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
其中:
-Xms:初始堆内存(如512m);-Xmx:最大堆内存(如1024m);-XX:MetaspaceSize:初始元空间内存(JDK 8+替代永久代);-XX:MaxMetaspaceSize:最大元空间内存。-XX:+UseG1GC(G1垃圾回收器),提升GC效率。Tomcat运行的应用程序可能依赖第三方组件(如数据库、Redis、第三方库),若依赖未正确配置或版本不兼容,会导致应用无法启动。
context.xml或web.xml中的数据库URL、用户名、密码正确,驱动程序(如mysql-connector-java.jar)已放入$CATALINA_HOME/lib目录。mvn dependency:tree(Maven)或gradle dependencies(Gradle),查看依赖冲突(如多个版本的同一库)。故障排查不仅是解决当前问题,还需通过监控预防未来问题。
jconsole或VisualVM连接Tomcat的JMX端口(默认1099),监控堆内存、线程池、GC情况;ab)或JMeter模拟高并发请求,定位性能瓶颈(如线程池过小、数据库查询慢)。