两个SQL服务器之间的EAP 6的数据源容错配置负载均衡?

问题描述 投票:1回答:1

环境:Jboss的EAP 6.4我在我的独立,ha.xml以下数据源配置

<datasource jndi-name="java:jboss/datasources/localPrimaryDS" pool-name="IntegrationDS1" enabled="true" use-java-context="true" statistics-enabled="true">
    <connection-url>jdbc:sqlserver://primarySqlServer;databaseName=HalfFat|jdbc:sqlserver://secondarySqlServer;databaseName=HalfFat</connection-url>
    <driver>mssql</driver>
    <url-delimiter>|</url-delimiter>
    <pool>
        <min-pool-size>5</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <prefill>true</prefill>
        <use-strict-min>true</use-strict-min>
        <flush-strategy>IdleConnections</flush-strategy>
    </pool>
    <security>
        <user-name>user</user-name>
        <password>psswd</password>
    </security> 
    <validation>                    
        <validate-on-match>true</validate-on-match>
        <background-validation>false</background-validation>
        <background-validation-millis>60000</background-validation-millis>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter"></exception-sorter>
    </validation>
</datasource>

观察:当两个SQL服务器存在时,应用程序获得专用从主SQL Server实例的JDBC连接。当我暂停/禁止主SQL Server中,在应用程序级别我观察到断开的连接被破坏/新的连接被从次级SQL Server实例获得。所有预期。然而,我发现两个连接的组合,如果我恢复/重新启用主SQL Server实例。

问:这是有点不期望的行为,我希望在它没有该应用程序使用的连接,从辅助数据库保持。有什么我可以在数据源配置禁用此“负载平衡”的行为?

谢谢

sql-server configuration jboss datasource jboss6.x
1个回答
1
投票

原来,<use-strict-min>true</use-strict-min>is是什么原因造成的问题。据redhat,使用时严格分钟设置为true,空闲连接扫描不会标记为关闭已经达成任何进一步的连接,一旦分池大小(在使用+可用连接)。因此,我认为,还有从没有标记为关闭和取消暂停SQL服务器将使那些再次连接不清洁可用的主数据库的一些连接。

© www.soinside.com 2019 - 2024. All rights reserved.