请教c3p0获取连接阻塞的问题

danceflash 2009-01-21 11:32:11
进行性能测试的时候经过一段时间的运行,系统停止响应
从数据库端看,连接全部sleep状态,没有阻塞
导出线程信息,发现存在一些阻塞信息
不知哪位大哥碰到过这种情况,请帮忙分析一下


系统配置如下:
tomcat 5.5
spring 2.0.6
hibernate 3.2.5
c3p0 0.9.1-pre-9
mysql 5.0.22

具体线程信息如下:

名称: TP-Processor12
状态:WAITING 在 com.mchange.v2.resourcepool.BasicResourcePool@13e4a5a 上
阻塞总数:36 等待总数: 4,702

堆栈追踪:
java.lang.Object.wait(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1155)
com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:405)
com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:351)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:466)
com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:125)
org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:510)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:350)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:262)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:102)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
...全文
1231 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Stephen@Tang 2011-04-29
  • 打赏
  • 举报
回复
我也碰到类似问题啊dump了线程如下:

Thread http-5081-Processor122: 
at java.lang.Object.wait(long)
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAcquire(long)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(long)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection()
at com.mchange.v2.c3p0.PoolBackedDataSource.getConnection()
at com.mchange.v2.c3p0.ComboPooledDataSource.getConnection()
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(javax.sql.DataSource)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(javax.sql.DataSource)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(org.springframework.orm.ibatis.SqlMapClientCallback)
at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(java.lang.String, java.lang.Object)

类似的线程很多这样的,全部在等待,没有释放连接,c3p0使用0.9.0版本
danceflash 2010-05-18
  • 打赏
  • 举报
回复
当时这个问题应该没有解决,又碰上了人事变动,好久没来结贴了,sigh
左大神在这 2009-06-29
  • 打赏
  • 举报
回复
我也遇到这个问题,楼主解决了吗,
East271536394 2009-02-08
  • 打赏
  • 举报
回复
import java.sql.Connection;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3p0Util {
static String driver_2005="com.microsoft.sqlserver.jdbc.SQLServerDriver";
static String url_2005="jdbc:sqlserver://localhost:1433;databasename=pubs";

static String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
static String url = "jdbc:microsoft:sqlserver://localhost:1433;databasename=pubs";
static String user = "sa";
static String password = null;

static ComboPooledDataSource cpds = null;

static {
try {
cpds = new ComboPooledDataSource();
//driver 2000
//cpds.setDriverClass(driver);
//cpds.setJdbcUrl(url);
//driver2005
cpds.setDriverClass(driver_2005);
cpds.setJdbcUrl(url_2005);
cpds.setUser(user);
cpds.setPassword(password);
} catch (Exception e) {
e.printStackTrace();
}
}

//获取连接
public static Connection getConnection() {
Connection conn = null;
try {
conn = cpds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}

public static void main(String[] args) {
Connection conn = C3p0Util.getConnection();
System.out.println(conn);
}
}
herowzz 2009-02-07
  • 打赏
  • 举报
回复
可否把你的配置文件贴出来看看
jspxnet 2009-02-02
  • 打赏
  • 举报
回复
你最大连接数是多少,如果是高访问量保证的50以上,

阻塞总数:36 等待总数: 4,702 每秒的查询数达到多少了?
fulianglove 2009-02-02
  • 打赏
  • 举报
回复
关注一下,mark
YuLimin 2009-01-23
  • 打赏
  • 举报
回复
此时CPU情况如何?
能否把比较全的JavaCore放上来一下。
建议升级Spring到spring 2.5.4以上看看

67,549

社区成员

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

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