废话不多说先上dataSource的配置<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass"><value>${jdbc.driverClassName}</value></property>
<property name="jdbcUrl"><value>${jdbc.url}</value></property>
<property name="user"><value>${jdbc.username}</value></property>
<property name="password"><value>${jdbc.password}</value></property>
<property name="acquireIncrement"><value>5</value></property>
<property name="autoCommitOnClose"><value>false</value></property>
<property name="forceIgnoreUnresolvedTransactions"><value>false</value></property>
<property name="initialPoolSize"><value>5</value></property>
<property name="minPoolSize"><value>5</value></property>
<property name="maxPoolSize"><value>50</value></property>
<property name="maxStatements"><value>0</value></property>
<property name="maxStatementsPerConnection"><value>100</value></property>
<property name="maxIdleTime"><value>60</value></property>
<property name="idleConnectionTestPeriod"><value>60</value></property>
<property name="testConnectionOnCheckout"><value>false</value></property>
<property name="numHelperThreads"><value>3</value></property>
</bean>
目前这个配置跑系统没有问题的,现在这个系统可能有几千人要访问,可能出现的超过最大连接数等等问题,不知道这些参数合理不合理
以前使用的dhcp作为数据源的配置,时不时的会出现数据库断开连接。现在改为c3p0,配置了半天,总算现在能把系统跑上了。各位看到帖子麻烦给点意见,不胜感激。Springc3p0数据库Java连接数
<property name="driverClass"><value>${jdbc.driverClassName}</value></property>
<property name="jdbcUrl"><value>${jdbc.url}</value></property>
<property name="user"><value>${jdbc.username}</value></property>
<property name="password"><value>${jdbc.password}</value></property>
<property name="acquireIncrement"><value>5</value></property>
<property name="autoCommitOnClose"><value>false</value></property>
<property name="forceIgnoreUnresolvedTransactions"><value>false</value></property>
<property name="initialPoolSize"><value>5</value></property>
<property name="minPoolSize"><value>5</value></property>
<property name="maxPoolSize"><value>50</value></property>
<property name="maxStatements"><value>0</value></property>
<property name="maxStatementsPerConnection"><value>100</value></property>
<property name="maxIdleTime"><value>60</value></property>
<property name="idleConnectionTestPeriod"><value>60</value></property>
<property name="testConnectionOnCheckout"><value>false</value></property>
<property name="numHelperThreads"><value>3</value></property>
</bean>
目前这个配置跑系统没有问题的,现在这个系统可能有几千人要访问,可能出现的超过最大连接数等等问题,不知道这些参数合理不合理
以前使用的dhcp作为数据源的配置,时不时的会出现数据库断开连接。现在改为c3p0,配置了半天,总算现在能把系统跑上了。各位看到帖子麻烦给点意见,不胜感激。Springc3p0数据库Java连接数
解决方案 »
- 关于JBOSS+JDK的配置部署问题。
- OSCache缺点
- 针对没有工作或者想找点java网站做的人士看
- 哪位大虾来看看啊,EJB中奇怪的问题,关于Timestamp 的
- 如何用jbuilder2006+jboss4.0.3+SQL2000开发Ejb
- 在OA中的”公文流转“中的“痕迹保留“效果怎么搞,大家给点意见啊:)谢谢了
- 关于struts验证问题
- 一个经典的找工作问题,如果是你,你会怎么办呢?
- 当从ejb返回的数据很多行,例如从数据库中查询,怎样显示?
- 在Spring中如何处理配置动态代理生成不同bean实现?
- hibernate 4 sqlserver2005方言的问题
- 批处理自动设置JAVA环境变量报错求教
顺带问一下 假如我设置50,但实际上有51人同时点,也会有一个先后顺序,那最后的那个会如何?数据库会因此出现什么状况呢?假如页面卡一点,50人登录系统,都未释放连接,连接数就算被用完了吧这个时候的acquireIncrement会发挥作用创建5个连接么、?
这个检查周期是多长啊
比如我登录要8秒,50人秒杀,8秒内都未释放连接,这个时候的acquireIncrement会在这8秒大概创建多少连接呢,会把数据库爆掉不?十分感谢,楼上迈克尔的回复,能继续帮忙看下不
当然这里会有超时机制,比如连接池让T51等了1分钟,也没看到有归还数据库连接的,那么就会抛出异常,向T51表示:对不起,帮不到你了。
数据库才不会被你爆掉呢,数据库最小气了,如果你给数据库只配置了50个可用会话,第51个连接请求过来,数据库直接返回:“没有了,滚一边儿去”。
有时间求解释下 “连接数就算被用完了吧这个时候的acquireIncrement会发挥作用创建5个连接么、?”
3Q
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2209)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:776)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
<property name="preferredTestQuery" value="SELECT ID FROM COMPANY where ID=1" />
<property name="idleConnectionTestPeriod" value="18000" />
<property name="testConnectionOnCheckout" value="true" />
自己写了一个
这行就是用来自动测试的,你原来的配置是false