一、HTTP状态码(常见于访问日志,如localhost_access_log)
HTTP状态码反映了客户端请求的响应结果,是Tomcat日志中最直观的错误标识,常见如下:
- 400 Bad Request:请求语法错误(如参数格式不正确、Header不符合规范),客户端需检查请求的URL、参数或Headers是否符合服务器要求。
- 401 Unauthorized:访问受保护资源时未提供有效认证信息(如未登录或密码错误),需确认用户凭据的正确性及资源的访问权限设置。
- 403 Forbidden:服务器拒绝访问,通常因文件/目录权限不足(如Tomcat用户无权读取webapps下的应用文件)或安全约束配置(如web.xml中的限制)。
- 404 Not Found:请求的资源(如JSP页面、静态文件、Servlet)不存在,需检查资源路径是否正确、应用是否部署成功(如webapps目录下是否有对应目录)。
- 500 Internal Server Error:服务器内部意外错误(如代码逻辑异常、数据库连接失败),需查看日志中的详细堆栈跟踪(如ClassNotFoundException、SQLException)以定位具体原因。
- 503 Service Unavailable:服务暂时不可用(如Tomcat负载过高、数据库连接池耗尽),需优化服务器配置(如增加内存、调整线程池大小)或扩容资源。
二、Java异常(常见于catalina.out或应用日志)
Java异常是Tomcat运行时问题的核心线索,通过异常类型和堆栈信息可快速定位故障点:
- ClassNotFoundException:Tomcat无法找到指定的类(如应用依赖的JAR包未放入WEB-INF/lib目录,或类名拼写错误),需检查类路径(Classpath)是否包含所需JAR文件。
- NoClassDefFoundError:运行时找不到类的定义(通常因编译后类文件丢失或版本冲突,如依赖库版本不一致),需确保所有依赖的JAR包完整且版本兼容。
- OutOfMemoryError:JVM内存不足(如堆内存耗尽,无法分配新对象),需调整JVM参数(如增加-Xmx(最大堆内存)、-Xms(初始堆内存),例如
export CATALINA_OPTS="-Xms512m -Xmx1024m"
)。
- SQLException:数据库访问异常(如连接失败、SQL语法错误、表不存在),需检查数据库服务是否启动、连接字符串(URL)、用户名密码是否正确,以及SQL语句的语法。
- PortConflictException(java.net.BindException: Address already in use):Tomcat尝试绑定的端口(如默认8080)已被其他进程占用(如Apache、Nginx或其他Tomcat实例),需通过
netstat -an | grep 端口号
查看占用进程,终止该进程或修改Tomcat的server.xml中的port配置。
三、配置错误(常见于catalina.out或localhost.log)
配置文件的语法或逻辑错误会导致Tomcat无法正常启动或运行:
- 配置文件语法错误:如server.xml、web.xml中存在未闭合的标签、无效属性(如设置不存在的debug属性),需检查配置文件的XML格式(可使用XML验证工具)及属性值的有效性。
- 部署描述符错误:web.xml中的Servlet映射、Listener配置错误(如Servlet类名不存在、URL模式冲突),需检查web.xml中的、等标签配置是否正确。
- 环境变量/路径错误:如CATALINA_HOME未设置、日志目录不存在(如logs目录无写入权限),需确认环境变量配置正确,且相关目录存在并可访问。