最近几天在做数据库结合应用的并发压力测试,发现并发压测性能一直上不去,透过应用日志发现主要慢在获取数据库连接上面,应用使用c3p0连接池的方式。连接池的主要配置如下,
<dbConnPools>
<dbConnPool id="1" name="afa" type="0">
<property name="User" value="xxx"/>
<property name="Password" value="xxx"/>
<property name="JdbcUrl" value="jdbc:t4jdbc://172.1.1.1:23400,172.1.1.2:23400,172.1.1.3:23400/"/>
<property name="DriverClass" value="org.trafodion.jdbc.t4.T4Driver"/>
<property name="InitialPoolSize" value="64"/>
<property name="MinPoolSize" value="64"/>
<property name="MaxPoolSize" value="128"/>
<property name="AcquireIncrement" value="8"/>
<property name="AcquireRetryAttempts" value="1"/>
<property name="AcquireRetryDelay" value="1000"/>
<property name="MaxIdleTime" value="1800"/>
<property name="MaxIdleTimeExcessConnections" value="0"/>
<property name="MaxConnectionAge" value="40"/>
<property name="CheckoutTimeout" value="0"/>
<property name="AutoCommitOnClose" value="true"/>
<property name="BreakAfterAcquireFailure" value="false"/>
<property name="MaxStatements" value="0"/>
<property name="MaxStatementsPerConnection" value="0"/>
<property name="PropertyCycle" value="0"/>
<property name="UnreturnedConnectionTimeout" value="0"/>
<property name="NumHelperThreads" value="3"/>
</dbConnPool>
连接池设置的pool size已经不小了,但是为什么获取数据库连接仍然很慢。于是本地创建c3p0应用进行测试。
首先下载c3p0的2个驱动包,c3p0-0.9.5.5.jar及 mchange-commons-java-0.2.19.jar,确定如果准备c3p0-config.xml文件,文件内容根据以上进行配置,接着导入数据库的驱动包。
完成以上步骤之后,创建两个JAVA代码程序,/c3p0test/src/c3p0test/C3P0Test.java及/c3p0test/src/c3p0test/JDBCUtils.java,完成以后的工程目录如下
具体代码如下,
package c3p0test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
i