提问者:小点点

监控JDBC连接池


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

  • com. mysql.jdbc.例外。MySQLTimeoutException:由于超时或客户端请求而取消的语句
  • java. sql.SQLException:查询执行被中断
  • java. sql.BatchUpdateException:由于超时或客户端请求而取消的语句

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

  • maxActive=100
  • minIdle=10
  • 初始化大小=10
  • 最大等待=10000
  • maxIdle=15

这些是针对一些负载沉重的系统的。所以我需要随时观察我的池大小是否足够以及其他诸如可用连接数之类的事情。有没有什么好的方法来监控连接池内部?


共2个答案

匿名用户

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

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

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

如果您的查询被中断,除了回滚事务并重试之外,您无能为力。

匿名用户

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