我使用tomcat或resin在8080端口服务,在一段时间的服务后,就会出现8080端口大量的CLOSE_WAIT状态,然后使用jstack导出堆栈信息,大量的java.lang.Thread.State: WAITING状态存在,并且很长时间一直在等待。
看堆栈信息貌似是在等待连接池,但我使用的C3P0连接池,查看跟数据库的连接数并没有达到配置的最大的连接数(300)。
请高人分析分析:"resin-tcp-connection-*:8080-5305" daemon prio=10 tid=0x00002aab78e44800 nid=0x7d68 in Object.wait() [0x0000000058b84000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAcquire(BasicResourcePool.java:968)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:208)
- locked <0x00002aaab50049f8> (a com.mchange.v2.resourcepool.BasicResourcePool)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:260)
at com.mchange.v2.c3p0.PoolBackedDataSource.getConnection(PoolBackedDataSource.java:94)
at com.mchange.v2.c3p0.ComboPooledDataSource.getConnection(ComboPooledDataSource.java:521)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:421)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
看堆栈信息貌似是在等待连接池,但我使用的C3P0连接池,查看跟数据库的连接数并没有达到配置的最大的连接数(300)。
请高人分析分析:"resin-tcp-connection-*:8080-5305" daemon prio=10 tid=0x00002aab78e44800 nid=0x7d68 in Object.wait() [0x0000000058b84000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAcquire(BasicResourcePool.java:968)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:208)
- locked <0x00002aaab50049f8> (a com.mchange.v2.resourcepool.BasicResourcePool)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:260)
at com.mchange.v2.c3p0.PoolBackedDataSource.getConnection(PoolBackedDataSource.java:94)
at com.mchange.v2.c3p0.ComboPooledDataSource.getConnection(ComboPooledDataSource.java:521)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:421)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
解决方案 »
- 求各位大侠教教小弟怎样能够实现TIP这个属性,能够报出异常,提示出我写的信息?
- 一个梅花雪树的问题,在jsp页面上展开节点都到了一排去了!求解
- javac.exe、 java.exe、 java虚拟机三者之间的区别与联系是什么?
- 如何创建弹出式小窗口
- 如何使用Java的rmi技术把一张图片从客户端传到服务器端?
- 请八路神仙解解难题……本人不甚感激……当以以身相许……
- 如何edit按钮控制表单可编辑状态
- eclipse用hibernate。 链接mysql时显示乱码??
- ! 求文件上传代码
- 问下,偶把SalaryEJB发布上去以后,调用就出错是什么原因
- MyEclipse编写Jsp网页时的问题...
- myeclipce 可以连接数据库 企业管理器就是打不开。
能够看到应用程序跟数据库的连接数完全在配置的最大连接数之内,并且mysql内的查询状态也大多是睡眠。