Debian Tomcat 日志中常见错误代码与含义
一 日志位置与查看方式
- 日志目录通常为:$CATALINA_HOME/logs(Debian 常见为 /var/log/tomcat 或安装目录下的 logs)。关键文件包括:catalina.out(启动/运行输出与错误)、localhost..log(本地主机相关事件)、localhost_access_log..txt(访问日志,含 HTTP 状态码)、以及可选的 manager..log / host-manager..log。常用排查命令:
tail -f catalina.out、grep "ERROR" catalina.out、less catalina.out、sed -n '/2025-11-22 10:00:00/,/2025-11-22 10:05:00/p' catalina.out。
二 常见 HTTP 状态码及含义
- 2xx 成功
- 200:请求成功,资源正常返回。
- 201:已创建,通常用于 POST 新建资源成功。
- 3xx 重定向
- 301:永久重定向(资源已永久移动到新 URL)。
- 302:临时重定向(资源临时在不同位置)。
- 304:未修改(客户端可使用本地缓存)。
- 4xx 客户端错误
- 400:请求语法错误或参数非法(如 JSON/XML 解析失败、缺少必填参数)。
- 401:未认证(未提供有效凭据或凭据无效)。
- 403:禁止访问(认证通过但无权限)。
- 404:资源未找到(WAR 未部署成功、Context 路径错误、静态资源缺失)。
- 405:方法不允许(如对只支持 GET 的接口发送了 POST)。
- 413:请求实体过大(上传文件超过服务器或连接器限制)。
- 414:请求 URI 过长(超过连接器或容器限制)。
- 415:不支持的媒体类型(Content-Type 与服务端期望不符)。
- 5xx 服务端错误
- 500:服务器内部错误(应用代码异常未捕获、Servlet 初始化失败等)。
- 502:网关错误(反向代理/负载均衡后的上游不可用,常见于 Nginx → Tomcat)。
- 503:服务不可用(Tomcat 关闭/过载/维护中,线程池耗尽或连接器暂停)。
- 504:网关超时(上游 Tomcat 响应超时)。
三 常见异常与日志关键词
- java.lang.OutOfMemoryError: Java heap space / PermGen / Metaspace:堆/元空间内存不足,需调整 JAVA_OPTS(如 -Xms/-Xmx/-XX:MetaspaceSize),并结合 jmap/jinfo 与监控定位泄漏或突发对象增长。
- ClassNotFoundException / NoClassDefFoundError:依赖 JAR 缺失或版本冲突,检查 WEB-INF/lib、类加载器隔离与打包配置。
- SQLException / CommunicationsException / Connection refused / Access denied:数据库连接失败,核对 JDBC URL、用户名/密码、驱动版本、网络连通性与数据库服务状态。
- Address already in use / BindException:端口被占用,检查 server.xml 连接器端口(如 8080/8005/8009),用
lsof -i:8080 或 netstat -tulnp | grep 8080 查杀占用进程并调整端口。
- FileNotFoundException / Permission denied:文件路径错误或权限不足,确保 CATALINA_HOME/logs、work、temp 等目录对 tomcat 用户可读写。
- IllegalArgumentException: Invalid character in HTTP request header / HTTP method name:HTTP 请求头或方法名非法(常见于恶意/畸形请求或客户端编码问题),检查客户端请求与连接器配置。
- javax.servlet.ServletException / web.xml 配置错误:Servlet/Filter 初始化失败或映射错误,核对 web.xml 与版本匹配、启动顺序与依赖注入。
四 快速定位与修复建议
- 先定位日志与时间点:在 catalina.out 或 localhost..log 中按时间过滤,结合异常堆栈定位到具体类/方法;必要时提高日志级别(如在 logging.properties 将相关 Logger 调到 FINE/FINEST)以获取更详细信息。
- 针对 HTTP 状态码:4xx 优先检查应用路由、权限与请求合法性;5xx 先看 catalina.out 异常堆栈与应用日志,再检查反向代理(如 502/504 多与上游 Tomcat 不可用或超时相关)。
- 资源与配置:端口冲突用
lsof -i:<端口> 查杀并重配 server.xml;内存问题通过 -Xms/-Xmx 调整并配合 jmap/jstack 分析;数据库连接失败逐项核对 URL/账号/网络/驱动;权限问题修正目录属主与权限(如 logs、work)。
- 变更后验证:使用
sudo systemctl restart tomcat 重启生效,并持续 tail -f 观察日志,确认错误消除且业务恢复正常。