首页主机资讯Ubuntu Tomcat日志中的警告如何处理

Ubuntu Tomcat日志中的警告如何处理

时间2026-01-19 22:19:03发布访客分类主机资讯浏览358
导读:Ubuntu Tomcat 日志警告处理流程 一、快速定位与通用排查 确认实例与进程:查看 Tomcat 是否在运行(如使用 systemd 则执行 systemctl status tomcat;或 ps -ef | grep tomc...

Ubuntu Tomcat 日志警告处理流程

一、快速定位与通用排查

  • 确认实例与进程:查看 Tomcat 是否在运行(如使用 systemd 则执行 systemctl status tomcat;或 ps -ef | grep tomcat),确认 CATALINA_HOMEJAVA_HOME 是否正确。
  • 实时查看日志:进入 $CATALINA_HOME/logs,使用 tail -f catalina.out、localhost.log 观察最新输出;必要时用 grep/awk 过滤关键字(如 “WARN|ERROR”)。
  • 检查端口与监听:确认 server.xml 中的 等端口是否被占用(ss -tunlp | grep 8080 或 lsof -i:8080),必要时调整端口或释放占用进程。
  • 检查配置文件与权限:核对 conf/server.xml、web.xml、context.xml 等是否有语法或路径错误;确保 logs、work、temp 等目录对 Tomcat 运行用户可读写。
  • 资源与版本:核查 CPU/内存/磁盘 使用;确认 JDK 与 Tomcat 版本兼容(如 Tomcat 10.x → Java 11+,Tomcat 9.x → Java 8+)。

二、常见警告与对应处理

警告现象 典型日志关键词 可能原因 处理要点
端口被占用 java.net.BindException: Address already in use 其他进程占用 8080/8009 用 lsof/netstat/ss 查占用进程并停止,或修改 server.xml 的端口
内存不足 Java HotSpot VM warning: os::commit_memory … failed; errno=12 或 OutOfMemoryError 物理内存/交换空间不足、堆设置过小、线程/缓存过多 增加内存或交换分区;优化 -Xms/-Xmx/-Xss;减少线程数;必要时增大 -XX:ReservedCodeCacheSize
目录不存在或不可读 WARNING: Problem with directory […] exists: [false], isDirectory: [false], canRead: [false] 使用包管理安装(如 tomcat7)时目录散落、链接缺失 为缺失目录建立符号链接(如 common/server/shared → /var/lib/tomcat7/…),或改用官方压缩包集中安装
类加载或 JDBC 驱动缺失 ClassNotFoundException / cannot load JDBC driver class 驱动 JAR 未放入 $CATALINA_HOME/lib 将对应数据库驱动(如 MySQL/DB2/Oracle)JAR 放入 lib 目录并重启
日志写入失败 java.io.FileNotFoundException: …/catalina.out 或 Permission denied 权限不足、日志文件被占用/锁定 确认运行用户对 logs/ 具备写权限;避免外部进程占用日志文件
停止时线程未关闭 The web application […] appears to have started a thread […] but has failed to stop it 应用创建了未守护/未关闭的线程(如异步任务、ZK 客户端、Mongo 清理) 在应用内注册关闭钩子、优雅关闭线程池/连接;必要时在 Context 配置 reloadable=“false” 并重启
多次认证失败被锁定 LockOutRealm: An attempt was made to authenticate the locked user “tomcat” 错误密码多次尝试触发锁定策略 检查 tomcat-users.xml 用户与角色配置,解锁或重置密码,避免暴力尝试

三、日志与配置的优化建议

  • 调整日志级别:编辑 conf/logging.properties,将 .level 或具体包的级别设为 WARNING/ERROR 以减少冗余输出(仅在问题定位完成后使用)。
  • 日志轮转与清理:使用 logrotate 管理 catalina.out 等日志,示例配置(/etc/logrotate.d/tomcat):
    /opt/tomcat/logs/catalina.out { daily; rotate 7; compress; missingok; notifempty; copytruncate }
  • 避免误删正在写入的日志:不建议直接 rm 正在使用的日志文件,优先使用 logrotate 或先停止写入再清理。
  • 运行用户与权限:建议以专用系统用户(如 tomcat)运行 Tomcat,确保 $CATALINA_HOME 及子目录归属正确(chown -R tomcat:tomcat)。

四、最小可行修复示例

  • 端口冲突:
    1. ss -tunlp | grep 8080 或 lsof -i:8080 找到占用 PID;2) kill 或修改 server.xml 的端口;3) 重启 Tomcat 并再次验证监听。
  • JDBC 驱动缺失:
    1. 下载匹配数据库的驱动 JAR;2) 复制到 $CATALINA_HOME/lib;3) 重启 Tomcat。
  • 内存不足:
    1. 编辑 bin/catalina.sh(或 setenv.sh),设置例如:export JAVA_OPTS=“-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m”;2) 重启观察是否消除内存相关警告。
  • 包管理版目录警告(tomcat7 常见):
    1. 检查 /usr/share/tomcat7 下缺失的 common/server/shared;2) 建立符号链接指向 /var/lib/tomcat7 对应目录;3) 重启验证。

五、何时需要进一步深入

  • 出现 OutOfMemoryError 且调整 -Xmx 仍无效,或频繁 Full GC:采集 heap dump 分析对象泄漏。
  • 关闭时大量 “线程未停止” 警告:审查应用的线程池/定时任务/资源客户端(如 ZK、Mongo、Kafka)是否实现了 javax.servlet.ServletContextListener.contextDestroyed 的优雅关闭。
  • 警告伴随访问异常或性能劣化:结合 localhost_access_log 分析慢请求与错误码,联动应用与数据库排查。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Tomcat日志中的警告如何处理
本文地址: https://pptw.com/jishu/786289.html
Ubuntu Tomcat日志中的异常如何排查 cpustat如何查看CPU上下文切换次数

游客 回复需填写必要信息