JBoss 6.0.0.Final与WildFly 10.1.0.Final按用户数据源连接池疑问
问题解答
你的理解是否正确?
完全正确!WildFly 默认的 PoolBySubjectAndCri 池策略确实是将连接池按用户(Subject)+ 连接请求标识(Cri)划分成多个子池(subpool),但这些子池都隶属于同一个全局池实例。max-pool-size 参数是针对整个全局池的总连接上限,而非每个子池的单独上限。这就解释了为什么设置 max-pool-size=5 时,两个用户会共享这5个全局连接配额,第二个用户无法获得额外连接从而出现阻塞;而设为10时,全局配额足够两个用户各用5个,所以恢复正常。
如何复现JBoss 6的“每个用户独立连接池限制”行为?
要实现每个用户最多使用5个连接、互不影响的效果,你需要在WildFly的数据源配置中添加子池单独上限的配置,具体操作如下:
添加
per-subpool-max-size参数
在<xa-pool>节点下增加<per-subpool-max-size>5</per-subpool-max-size>,这个参数专门用于设置每个子池(即单个用户)的最大连接数。调整全局
max-pool-size为合理值
全局的max-pool-size需要设置为足够容纳预期最大用户数×单个用户上限的数值(比如如果最多有4个并发用户,设为20即可),避免全局配额不足影响多用户使用。
修改后的完整配置示例
<xa-datasource jndi-name="java:/pgsql" pool-name="smaDS" enabled="true" use-ccm="true" mcp="org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool" statistics-enabled="true"> <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class> <xa-datasource-property name="PortNumber">5432</xa-datasource-property> <xa-datasource-property name="DatabaseName">somedb</xa-datasource-property> <xa-datasource-property name="ServerName">localhost</xa-datasource-property> <driver>postgresql-9.4.1212.jar</driver> <xa-pool> <min-pool-size>0</min-pool-size> <initial-pool-size>0</initial-pool-size> <max-pool-size>20</max-pool-size> <!-- 全局总上限,按需调整 --> <per-subpool-max-size>5</per-subpool-max-size> <!-- 单个用户的连接上限 --> <allow-multiple-users>true</allow-multiple-users> <wrap-xa-resource>true</wrap-xa-resource> </xa-pool> <security> <security-domain>postgresqluser</security-domain> </security> </xa-datasource> <security-domain name="postgresqluser"> <authentication> <login-module code="org.picketbox.datasource.security.CallerIdentityLoginModule" flag="required"> <module-option name="password-stacking" value="useFirstPass"/> </login-module> </authentication> </security-domain>
额外说明
- 确保
allow-multiple-users="true"保持开启,这是WildFly支持多用户子池的前提条件。 - 你的
CallerIdentityLoginModule配置是正确的,WildFly中不再需要managedConnectionFactoryName参数,因为security-domain已经和数据源直接关联。
内容的提问来源于stack exchange,提问作者panix Panixgr
相关产品推荐
相关产品推荐

