ubuntu

Ubuntu Tomcat日志中的异常处理方法

小樊
45
2025-12-04 03:31:29
栏目: 智能运维

Ubuntu Tomcat日志中的异常处理方法

一 定位与查看日志

二 异常捕获与日志级别

三 常见异常与处理对照表

现象/日志关键词 可能原因 快速处置
端口占用(如8080 其他进程占用端口 sudo lsof -i :8080 或 `netstat -tulpen
ClassNotFoundException / NoClassDefFoundError 依赖 JAR 缺失或版本冲突 将缺失 JAR 放入WEB-INF/lib或**$CATALINA_HOME/lib**;清理工作目录后重部署
OutOfMemoryError 堆/元空间不足 catalina.sh中增大堆:-Xms512m -Xmx2048m;必要时增加元空间或分析内存泄漏
HTTP 404 资源不存在或应用未部署成功 检查应用是否部署、上下文路径是否正确、静态资源是否在正确目录
HTTP 500 应用代码异常/配置错误 查看catalina.outlocalhost.[日期].log的堆栈,定位到具体类与方法后修复
启动失败(LifecycleException 等) 配置错误(如server.xml)、端口冲突、权限不足 回滚最近变更,核对server.xml语法与端口,检查logs/catalina.[日期].log首屏报错
日志乱码 编码不一致 设置URIEncoding="UTF-8"ConsoleHandler.encoding=UTF-8
访问日志无记录 AccessLogValve 未启用或路径错误 server.xml中启用并核对directory/prefix
以上对照覆盖了 Ubuntu 上 Tomcat 最常见的问题类型与处置方向,可结合日志关键字快速定位并解决。

四 日志轮转与清理

五 一键排查脚本示例

#!/usr/bin/env bash
export CATALINA_HOME=${CATALINA_HOME:-/opt/tomcat9}
LOG_DIR="$CATALINA_HOME/logs"

echo "=== 最近100行 catalina.out ==="
tail -n 100 "$LOG_DIR/catalina.out"

echo -e "\n=== 今日 ERROR/SEVERE 计数 ==="
grep -Ei 'ERROR|SEVERE' "$LOG_DIR/catalina.out" | grep "$(date +%Y-%m-%d)" | wc -l

echo -e "\n=== 占用 8080 端口的进程 ==="
ss -lntp | grep ':8080' || echo "端口 8080 未被占用"

echo -e "\n=== 最近一次启动失败线索 ==="
grep -n "LifecycleException\|Caused by" "$LOG_DIR/catalina.[0-9]*.log" | tail -5

echo -e "\n=== 访问日志中 5xx 统计 ==="
zgrep -E ' 5[0-9]{2} ' "$LOG_DIR/localhost_access_log."*.txt 2>/dev/null | wc -l

将脚本保存为**/usr/local/bin/tomcat-debug.sh**,执行bash /usr/local/bin/tomcat-debug.sh即可快速获取异常排查线索。

0
看了该问题的人还看了