监视JDBC连接池

时间:2014-06-04 12:51:40

标签: java jdbc

我通过JDBC驱动程序和Tomcat配置连接我的Java应用程序。我使用this类来定义我的配置。但有时,我有以下例外情况:

  • com.mysql.jdbc.exceptions.MySQLTimeoutException:由于超时或客户请求而取消声明
  • java.sql.SQLException:查询执行中断
  • java.sql.BatchUpdateException:由于超时或客户请求而取消声明

但是数据库负载不大,所以我认为问题出在我的配置上。以下是我的一些配置:

  • maxActive = 100
  • minIdle = 10
  • initialSize = 10
  • maxWait = 10000
  • maxIdle = 15

这些适用于某些负载较重的系统。所以我需要观察我的游泳池大小是否足够,以及其他可能的连接数量。是否有任何监控连接池内部的好方法?

2 个答案:

答案 0 :(得分:1)

对于超时异常,请考虑以下伪代码:

if(!connection.isValid())
  connection = getNewConnection();
resultSet rs = connection.execute(qry);

在执行查询之前,基本上检查您的连接是否已超时。

如果您的查询被中断,除了回滚事务并重试之外,您可以做的事情并不多。

答案 1 :(得分:0)

启用JMX,tomcat将使用它的mbean服务器注册您的数据源。然后,您可以使用jconsole查看连接池详细信息。