sql - jboss数据源统计JMX监控-不一致信息

标签 sql jboss datasource jmx

我在 jboss 4.2.3 (redhat 4.3) 上的 *-ds.xml 中定义了两个数据源 两个数据源是相同的。仅 jndi 名称不同 每个定义 min=max=10

<xa-datasource>
 <jndi-name>com.trax.hibernate.DataSource</jndi-name>
 <track-connection-by-tx>true</track-connection-by-tx>
 <isSameRM-override-value>false</isSameRM-override-value>
 <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
 <xa-datasource-property name="URL">jdbc:oracle:thin:@localhost:1521:orcl10</xa-datasource-property>
 <xa-datasource-property name="User"> xxxx </xa-datasource-property>
 <xa-datasource-property name="Password"> xxxx </xa-datasource-property>
 <min-pool-size>10</min-pool-size>
 <max-pool-size>10</max-pool-size>
 <prefill>true</prefill>
 <blocking-timeout-millis>60000</blocking-timeout-millis>
 <ih3e-timeout-minutes>15</ih3e-timeout-minutes>
 <valid-connection-checker-class-name> org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker </valid-connection-checker-class-name>
 <check-valid-connection-sql>select 1 from gtw_cust</check-valid-connection-sql>
 <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
 <no-tx-separate-pools/>
</xa-datasource>

<xa-datasource>
 <jndi-name>AuditTrail.DataSource</jndi-name>
 <track-connection-by-tx>true</track-connection-by-tx>
 <isSameRM-override-value>false</isSameRM-override-value>
 <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
 <xa-datasource-property name="URL">jdbc:oracle:thin:@localhost:1521:orcl10</xa-datasource-property>
 <xa-datasource-property name="User">xxxx</xa-datasource-property>
 <xa-datasource-property name="Password"> xxxx </xa-datasource-property>
 <min-pool-size>10</min-pool-size>
 <max-pool-size>10</max-pool-size>
 <prefill>true</prefill>
 <blocking-timeout-millis>60000</blocking-timeout-millis>
 <ih3e-timeout-minutes>15</ih3e-timeout-minutes>
 <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
 <check-valid-connection-sql>select 1 from gtw_cust</check-valid-connection-sql>
 <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
 <no-tx-separate-pools/>
</xa-datasource>

问题: 在 jmx-console 上,name=com.trax.hibernate.DataSource,service=ManagedConnectionPool,信息显示 20 个连接,而不是预期的 10 个。

我希望创建的连接的最大值为 10 (MaxSize)。 这里看起来实际连接数是 MaxSize 的两倍,并且连接被创建和销毁(40 个创建和 20 个销毁)

我做错了什么?你如何解释这一点?

com.trax.hibernate.DataSource:
AvailableConnectionCount    20
ConnectionCount           20
MinSize                      10
MaxSize                      10
MaxConnectionsInUseCount    11
InUseConnectionCount              0
ConnectionCreatedCount  40
ConnectionDestroyedCount    20

AuditTrail.DataSource:
AvailableConnectionCount    10
ConnectionCount           10
MinSize                      10
MaxSize                      10
MaxConnectionsInUseCount    8
InUseConnectionCount              0
ConnectionCreatedCount  20
ConnectionDestroyedCount    10

最佳答案

这是因为属性 <no-tx-separate-pools/> 。请参阅《JBoss 服务器配置指南》中有关 XA 数据源的文档:

<no-tx-separate-pools>

Pool transactional and non-transactinal connections separately

Warning

Using this option will cause your total pool size to be twice max-pool-size, because two actual pools will be created.

http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/4.3/html-single/Server_Configuration_Guide/index.html#id2947572

关于sql - jboss数据源统计JMX监控-不一致信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5895047/

相关文章:

java.sql.SQLException : You cannot commit during a managed transaction

maven - 如何在私有(private) Maven 仓库中使用 JDBC 驱动程序在 TomEE 中配置数据源?

mysql - 分配给用户 ID 的主键字段也应该是唯一的还是多余的?

java - 在eclipse中找不到JEE源

java - Jboss 或 Tomcat

Spring MVC - Bean 不适用于 @Autowired

java - HikariCP 未在 close() 上关闭连接(连接泄漏)

mysql - 在MYSQL中搜索特定关键字

mysql - 获取两个日期之间的天数、小时数和分钟数及其各自的时间戳

sql - 定期更新与 DBMS 并行执行