1. 查看Tomcat日志定位具体错误
Linux下Tomcat的500错误日志主要位于/var/log/tomcatX/目录(X为Tomcat版本号,如tomcat9),核心日志文件包括:
catalina.out:记录Tomcat标准输出和错误输出(包含完整的错误堆栈);localhost.<date>.log:记录特定于本地主机的应用层错误(如Servlet异常)。grep "500" /var/log/tomcatX/catalina.out命令快速定位500错误的详细信息(如错误类名、行号、触发条件),这是解决问题的关键第一步。2. 检查应用程序代码逻辑
500错误最常见的原因是代码缺陷,需重点排查:
javac编译应用时是否有报错(如未闭合的括号、拼写错误);NullPointerException(空指针)、ArrayIndexOutOfBoundsException(数组越界)等异常,需检查对应代码的业务逻辑(如未判空的数据库查询结果);applicationContext.xml、hibernate.cfg.xml等配置文件的路径、Bean定义是否正确(如数据库方言配置错误)。3. 验证Tomcat配置文件正确性
Tomcat的核心配置文件错误会导致500错误,需逐一检查:
<Connector>标签的端口号(如8080)未被占用,<Context>路径(如/myapp)与应用部署目录一致;<servlet-mapping>)、过滤器(<filter>)配置是否正确(如URL模式拼写错误);<Resource>标签的name、url、username、password等属性是否正确。4. 确认依赖库的完整性与兼容性
应用依赖的库(JAR包)缺失或版本冲突会引发500错误,需处理:
WEB-INF/lib目录下包含应用所需的所有JAR包(如数据库驱动mysql-connector-java.jar、框架核心包spring-core.jar);mvn dependency:tree(Maven项目)查看依赖树,排除重复或冲突的版本(如同时引入log4j1.x和log4j2.x);WEB-INF/lib目录在应用的类路径(Classpath)中(Tomcat默认会加载该目录下的JAR包)。5. 排查数据库连接问题
若应用依赖数据库,连接失败是500错误的常见诱因,需验证:
web.xml或context.xml中的数据库URL(如jdbc:mysql://localhost:3306/mydb)、用户名、密码是否正确;systemctl status mysql(MySQL)或systemctl status postgresql(PostgreSQL)命令确认数据库服务是否启动;ping <数据库IP>和telnet <数据库IP> 3306测试网络连接是否畅通;GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'%')。6. 检查服务器资源是否充足
资源不足会导致Tomcat无法正常处理请求,需监控:
free -h命令查看内存使用情况,若available内存不足,调整Tomcat的JAVA_OPTS参数(在setenv.sh中设置)增加堆大小(如-Xms512m -Xmx1024m);top命令查看CPU占用率,若长期超过80%,需优化应用代码(如减少循环内的数据库查询)或升级服务器配置;df -h命令查看磁盘空间,若/分区剩余空间不足(如小于1GB),清理无用文件(如旧日志、临时文件)。7. 验证版本兼容性
版本不兼容会导致运行时错误,需确认:
UnsupportedClassVersionError错误);8. 修复文件权限问题
Tomcat进程对应用文件或目录无权限访问会导致500错误,需调整:
/var/lib/tomcatX/webapps/myapp)的所有者设为Tomcat用户(通常为tomcat),命令:chown -R tomcat:tomcat /var/lib/tomcatX/webapps/myapp;/tmp、WEB-INF/upload)有写权限(chmod -R 755 /tmp)。9. 重启Tomcat服务
完成上述排查后,重启Tomcat服务使配置生效:
systemctl restart tomcatX # 如tomcat9
或使用Tomcat的startup.sh脚本:
/usr/local/tomcatX/bin/startup.sh
重启后再次测试应用,观察500错误是否消失。