首页主机资讯Ubuntu Tomcat日志中如何查看数据库连接情况

Ubuntu Tomcat日志中如何查看数据库连接情况

时间2025-11-14 15:20:04发布访客分类主机资讯浏览975
导读:Ubuntu Tomcat日志查看数据库连接情况的实用步骤 一 定位日志文件与快速筛选 常见日志路径为:/var/log/tomcat*/catalina.out、/var/log/tomcat*/localhost*.log;若自定义安...

Ubuntu Tomcat日志查看数据库连接情况的实用步骤

一 定位日志文件与快速筛选

  • 常见日志路径为:/var/log/tomcat*/catalina.out/var/log/tomcat*/localhost*.log;若自定义安装,通常在 $CATALINA_HOME/logs/。建议先看 catalina.out(标准输出/错误),再看 localhost.log(应用级事件)。
  • 实时查看与关键字筛选(按出现频率从高到低观察):
    • 实时跟踪:tail -f /var/log/tomcat*/catalina.out
    • 连接池与获取失败:grep -Ei “connection pool|getconnectiontimeout|cannot get connection|connection leak” /var/log/tomcat*/catalina.out
    • 数据库连通性错误:grep -Ei “connection refused|access denied|timeout|Communications link failure” /var/log/tomcat*/catalina.out
    • 时间段定位(最近1小时):grep -Ei “connection pool” /var/log/tomcat*/catalina.out | grep “$(date -d ‘1 hour ago’ ‘+%b %d %H:%M’)”
  • 若需查看实际执行的SQL,可在应用日志中检索(如 SELECT/INSERT/UPDATE),或结合数据库日志进一步核对。

二 从日志识别典型连接问题

  • 连接超时或耗尽:出现如 GetConnectionTimeoutException: Wait millis 6000, active 100,表示在6秒内无法获取连接,且当前活跃连接已达100(常见于 maxTotal/maxActive 偏小或连接未及时归还)。
  • 等待空闲对象超时:Cannot get a connection, pool error Timeout waiting for idle object,多为 maxWaitMillis 过短或连接泄漏导致无可用连接。
  • 连接泄露:出现 Connection has been abandoned 或应用日志提示连接未关闭,说明代码未正确释放 Connection/Statement/ResultSet
  • 连通性失败:日志含 Connection refused / Access denied / Communications link failure,需优先排查数据库是否启动、网络与防火墙、账号权限、JDBC URL 是否正确。

三 结合数据库侧日志交叉验证

  • 同步查看数据库错误与进程信息,有助于判断是“连接建立失败”还是“连接被占用/慢查询拖死”。
  • 常见数据库日志路径与命令示例:
    • MySQL:/var/log/mysql/error.log;实时查看:tail -f /var/log/mysql/error.log;会话与慢查询:mysql -e “SHOW PROCESSLIST; ” 或开启慢查询日志分析长事务。
    • PostgreSQL:/var/log/postgresql/postgresql-.log;实时查看:tail -f /var/log/postgresql/postgresql-.log。
  • 若数据库日志提示“too many connections”,说明连接池上限或应用释放策略需要优化。

四 打开连接池日志与监控以持续观测

  • conf/logging.properties 中调低相关日志级别(如将 javax.sqlorg.apache.tomcat.jdbc.pool 设为 FINE/DEBUG),以获取获取/归还连接、验证、回收等细节。
  • context.xml/server.xml 的数据源(Tomcat JDBC Pool)中开启泄露检测与连接有效性校验,便于在日志中自动打印可疑泄露堆栈与剔除失效连接:
    • 泄露检测与回收:
      • removeAbandoned=“true”
      • removeAbandonedTimeout=“300”(占用超过300秒视为泄露)
      • logAbandoned=“true”(记录泄露堆栈)
    • 连接有效性校验(获取时验证,避免拿到失效连接):
      • testOnBorrow=“true”
      • validationQuery=“SELECT 1”
      • validationQueryTimeout=“5”
    • 空闲连接维护(保持一定空闲并定期清理):
      • minIdle=“10”
      • timeBetweenEvictionRunsMillis=“60000”
      • minEvictableIdleTimeMillis=“300000”
  • 验证与观测:
    • 重启使配置生效:sudo systemctl restart tomcat
    • 通过 Tomcat ManagerJMX(如 VisualVM)观察 active、idle、waiting 等指标,确认优化成效。

五 常见现象与处置要点对照表

日志现象关键词 可能原因 处置要点
GetConnectionTimeoutException / active 达到上限 连接池容量不足、慢查询占满连接 适度增大 maxTotal/maxActive;优化慢SQL;必要时增加数据库 max_connections
Timeout waiting for idle object maxWaitMillis 过短或连接未及时释放 延长 maxWaitMillis;排查并修复连接泄漏(确保 close)
Connection has been abandoned / logAbandoned 输出堆栈 代码未关闭连接 使用 try-with-resources;修复泄露点;保留 logAbandoned 定位
Connection refused / Access denied / Communications link failure 数据库未启动、网络/防火墙阻断、账号权限或URL错误、驱动未加载 启动数据库;放通防火墙(如 UFW);核对 URL/账号/密码;将驱动 JAR 放入 $CATALINA_HOME/lib
Validation fails / testOnBorrow 频繁 连接被数据库端回收或网络抖动 配置 validationQuery/testOnBorrow/validationInterval,剔除失效连接

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


若转载请注明出处: Ubuntu Tomcat日志中如何查看数据库连接情况
本文地址: https://pptw.com/jishu/748081.html
如何通过Ubuntu Tomcat日志分析系统瓶颈 如何利用Ubuntu Tomcat日志提高安全性

游客 回复需填写必要信息