C3P0 老是报错,求大神!!!

Louistao 2013-02-17 02:53:55

[2013-02-14 20:37:46] WARN [com.mchange.v2.resourcepool.BasicResourcePool] - Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@14c7262
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
at java.util.HashMap$KeyIterator.next(HashMap.java:828)
at com.mysql.jdbc.Connection.closeAllOpenStatements(Connection.java:2191)
at com.mysql.jdbc.Connection.realClose(Connection.java:4777)
at com.mysql.jdbc.Connection.close(Connection.java:2172)
at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:474)
at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:191)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:470)
at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:964)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)


[2013-02-15 11:48:15] WARN  [com.mchange.v2.resourcepool.BasicResourcePool] - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@11079b5 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.SocketException: No buffer space available (maximum connections reached?): connect

STACKTRACE:

java.net.SocketException: java.net.SocketException: No buffer space available (maximum connections reached?): connect
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2666)
at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
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)


** END NESTED EXCEPTION **



Last packet sent to the server was 0 ms ago.
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2741)
at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
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)
[2013-02-15 11:49:43] WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner] - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@9184d1 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
[2013-02-15 11:49:44] WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner] - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@9184d1 -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 0
Active Tasks:
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@1217953
com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@a45b9a
com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@79e819
com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@174e98f
com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@91be7f
com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@719386
com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@8c7d1c
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,]
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,]
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,]
...全文
8589 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Louistao 2013-02-17
  • 打赏
  • 举报
回复
引用 10 楼 fangmingshijie 的回复:
如果同时访问,数据访问量比较大的话,会比较慢。
大侠,有空的话加下我Q:812579512,求指点
  • 打赏
  • 举报
回复
如果同时访问,数据访问量比较大的话,会比较慢。
Louistao 2013-02-17
  • 打赏
  • 举报
回复
引用 8 楼 fangmingshijie 的回复:
不用,有自动关闭机制。
好的,还有个问题,请问假如我有三个程序里面都用到了c3p0,三个程序都放在了一个服务器的Tomcat下,这样做的话,有什么地方需求注意的吗?
  • 打赏
  • 举报
回复
不用,有自动关闭机制。
Louistao 2013-02-17
  • 打赏
  • 举报
回复
引用 6 楼 fangmingshijie 的回复:
Java code?12345678<property name="minPoolSize" value="1" /><property name="maxPoolSize" value="300" /><property name="maxIdleTime" value="60" /><property name="acquireIncrement" value="5"……
WARN之类的警告都不会报吗?还有一个问题想请教一下,请问大侠用过mybatis吗? 我用spring+ mybatis 需要手动的去关闭连接吗
  • 打赏
  • 举报
回复

<property name="minPoolSize" value="1" />
<property name="maxPoolSize" value="300" />
<property name="maxIdleTime" value="60" />
<property name="acquireIncrement" value="5" />
<property name="initialPoolSize" value="1" />
<property name="idleConnectionTestPeriod" value="60" />

我设置成这样就跑的很好。
Louistao 2013-02-17
  • 打赏
  • 举报
回复
引用 3 楼 crlystaldong 的回复:
<property name="maxIdleTime"> <value>300</value> </property> 好像是这个,保持连接时间应该设置大点
请问下如果maxIdleTime设置成300秒会影响到那些方面?
Louistao 2013-02-17
  • 打赏
  • 举报
回复
引用 2 楼 fangmingshijie 的回复:
看下你的配置文件,最大连接池多少
是mysql的最大连接数吗? mysql的最大连接数为800
小V小V志 2013-02-17
  • 打赏
  • 举报
回复
<property name="maxIdleTime"> <value>300</value> </property> 好像是这个,保持连接时间应该设置大点
  • 打赏
  • 举报
回复
看下你的配置文件,最大连接池多少
Louistao 2013-02-17
  • 打赏
  • 举报
回复
我的配置是这样的:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass">
			<value>com.mysql.jdbc.Driver</value>
		</property>
		<property name="jdbcUrl">
			<value>jdbc:mysql://127.0.0.1:3306/smsdb?useUnicode=true&characterEncoding=UTF-8& </value>
		</property>
		<property name="user">
			<value>root</value>
		</property>
		<property name="password">
			<value>123456</value>
		</property>
		<!--连接池中保留的最小连接数。 -->
		<property name="minPoolSize">
			<value>10</value>
		</property>

		<!--连接池中保留的最大连接数。Default: 15 -->
		<property name="maxPoolSize">
			<value>35</value>
		</property>

		<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
		<property name="initialPoolSize">
			<value>15</value>
		</property>

		<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
		<property name="maxIdleTime">
			<value>300</value>
		</property>

		<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
		<property name="acquireIncrement">
			<value>0</value>
		</property>

		<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements 属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。 
			如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
		<property name="maxStatements">
			<value>0</value>
		</property>

		<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
		<property name="idleConnectionTestPeriod">
			<value>100</value>
		</property>

	</bean>

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧