在使用过程中发现分布式事务atomikos框架,在低并发量时很稳定,在面对瞬间高并发时会出现数据库连接超时以及超过事务最大连接数等问题
1.需要在classpath下建一个jta.properties(或者transactions.properties)文件
#配置事务最大连接数为无限
com.atomikos.icatch.max_actives=-1
# 默认的超时时间 600000 --> 10分钟
com.atomikos.icatch.default_jta_timeout = 600000
# 设置事务的最大超时时间
com.atomikos.icatch.max_timeout = 6000000
2.在Spring.xml配置文件下,设置如下选项
<bean id="abstractXADataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean"
destroy-method="close">
//此处不能设置poolsize,设置poolsize后会覆盖minPoolsize和maxPoolsize参数
<!-- <property name="poolSize" value="200" />-->
<property name="minPoolSize" value="50" />
<property name="maxPoolSize" value="200" />
<property name="borrowConnectionTimeout" value="60" />
<property name="reapTimeout" value="2000" />
<property name="maxIdleTime" value="60" />
<property name="maxLifetime" value="60"/>
<property name="maintenanceInterval" value="60" />
<property name="loginTimeout" value="60" />
<property name="testQuery">
<value>SELECT 1</value>
</property>
</bean>
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
<property name="forceShutdown">
<value>false</value>
</property>
</bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
</bean>
<bean id="springTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<ref bean="atomikosTransactionManager" />
</property>
<property name="userTransaction">
<ref bean="atomikosUserTransaction" />
</property>
</bean>
3.搭建nginx代理使用负载均衡,负载均衡模式采用fair模式