CentOS Tomcat错误排查技巧
Tomcat的日志文件是定位错误的“指南针”,默认位于$TOMCAT_HOME/logs目录下,关键日志包括:
tail -f catalina.out(按Ctrl+C停止);tail -f catalina.out | grep -i "error\|exception"(不区分大小写匹配“error”或“exception”);sed -n "/2025-10-29/,/2025-10-30/p" catalina.out。Tomcat默认使用8080端口(HTTP)、8005端口(关闭命令)、8009端口(AJP协议),若端口被占用,会导致启动失败。排查步骤:
netstat -tuln | grep 8080(替换为实际端口);lsof -i:8080;kill -9 <PID>(强制终止);$TOMCAT_HOME/conf/server.xml,找到<Connector port="8080">标签,更改为未使用的端口(如8081),保存后重启Tomcat。Tomcat依赖JDK运行,需确保Java环境正确配置:
java -version(需显示JDK版本,如1.8.0_392);JAVA_HOME环境变量:echo $JAVA_HOME(应指向JDK安装路径,如/usr/java/jdk1.8.0_392);~/.bashrc或/etc/profile,添加:export JAVA_HOME=/usr/java/jdk1.8.0_392
export PATH=$JAVA_HOME/bin:$PATH
执行source ~/.bashrc使配置生效。Tomcat的核心配置文件(server.xml、web.xml、context.xml)语法错误会导致启动失败:
<Connector>标签的端口、协议是否正确(如protocol="HTTP/1.1");<Context>标签的docBase(应用路径)是否存在;<url-pattern>是否冲突);<Resource>标签的url、username、password是否正确)。xmllint工具验证XML语法:xmllint --noout $TOMCAT_HOME/conf/server.xml。系统资源不足(磁盘空间、内存)会导致Tomcat无法启动或运行缓慢:
df -h查看磁盘使用情况,重点关注/(根目录)和$TOMCAT_HOME/logs(日志目录);若日志过大,删除旧日志(如rm -rf $TOMCAT_HOME/logs/*.log.2025-09*)或使用logrotate工具轮转日志;$TOMCAT_HOME/bin/catalina.sh(Linux)或catalina.bat(Windows),调整JAVA_OPTS参数(如-Xms512m初始堆内存、-Xmx1024m最大堆内存),根据服务器内存大小合理分配(建议堆内存不超过物理内存的70%)。Tomcat运行用户(通常为tomcat)需对相关目录有读写权限:
$TOMCAT_HOME/webapps(应用部署目录)、$TOMCAT_HOME/logs(日志目录)、$TOMCAT_HOME/temp(临时目录);chown -R tomcat:tomcat $TOMCAT_HOME(将$TOMCAT_HOME及其子目录所有权赋予tomcat用户);chmod -R 755 $TOMCAT_HOME(允许所有者读写执行,其他用户读执行)。CentOS默认启用SELinux(安全增强模块),可能阻止Tomcat访问网络或文件:
setenforce 0(执行后SELinux变为permissive模式,仅记录违规不阻止);/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,重启服务器;semanage port -a -t http_port_t -p tcp 8080(需安装policycoreutils-python包)。若出现线程死锁、响应缓慢等问题,可使用以下工具监控:
jstack <PID> > thread_dump.log(<PID>为Tomcat进程ID,可通过ps -ef | grep java获取);catalina.sh中添加-Dcom.sun.management.jmxremote参数);ELK Stack(Elasticsearch+Logstash+Kibana)或Splunk对日志进行可视化分析,快速定位高频错误。