JBoss连接池创建了许多与MySQL的连接

时间:2011-03-18 14:46:15

标签: java mysql jboss connection-pooling

我们正在使用JBoss 4.2.2.GA / Hibernate 3.2.4.sp1 / SpringMVC 2.5 / MySQL 5.0.27的设置。

以下是mysql-ds.xml文件:

<datasources>
  <local-tx-datasource>
    <jndi-name>myDS</jndi-name>
    <connection-url>jdbc:mysql://127.0.0.1:3306/database?zeroDateTimeBehavior=convertToNull&amp;useConfigs=maxPerformance</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>user</user-name>
    <password>password<password>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    <min-pool-size>5</min-pool-size>
    <max-pool-size>100</max-pool-size>
    <blocking-timeout-millis>30000</blocking-timeout-millis>
    <idle-timeout-minutes>1</idle-timeout-minutes>
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>

查看JMX-Console - &gt; service = ManagedConnectionPool,我们正在使用JBossManagedConnectionPool

现在问题是,即使是平庸的流量(网站昨天吸引了大约5000次访问/ 15000次页面浏览),MySQL上有96个线程处于睡眠模式(使用show processlist)。

这些确实会减少,但我真正的问题是,为什么jboss会创建如此多的连接? MySQL上的MaxConnections = 250。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

当我遇到这种情况时,问题是某些hibernate会话没有关闭,这会导致连接泄漏。检查你的会话关闭语句是否在finally块中。

答案 1 :(得分:1)

经过大量分析,发现Hibernate在后端发出了太多查询来加载某些映射,因为mysqladmin status命令每秒提供500个查询。

解决这个问题也可以解决这个问题。

感谢所有帮助过的人......