C3P0最大连接数与并发访问问题

月若无痕_ 发布于 2014/12/26 15:12
阅读 7K+
收藏 3
正在做一个javaWeb的项目,用到了C3P0,在测试的时候发现项目的并发访问量严重受到C3P0配置中的MaxPoolSize属性的限制,只要并发量超过该属性值就报获取连接超时的错误,请问有没有什么办法可以解决这个问题?前提是不能影响到项目的响应速度,感谢!
加载中
1
南湖船老大
南湖船老大

你的理解不对。如果连接超过最大连接数,不会立刻报错,而是等待旧的连接释放,直到指定等待超时时间到了仍然没有获取到可用连接才会报错。

所以楼上说的

调大获取连接的等待时间

是正确的思路。当然,静态化和缓存也是要做的

1
purely
purely
调大获取连接的等待时间就好。
0
码以载道
码以载道

每个访问都请求数据库吗?有没有加入缓存框架(Ehcache、Memcache等),或者使用ORM框架的缓存机制?如果有的话,应该不会这样吧,我也不太懂,只是提供个意见。

月若无痕_
月若无痕_
是的,每次请求都要获取数据库中最新的数据,所以不能做Cache,请问还有别的方法吗?
0
zth1002
zth1002
使用缓存
月若无痕_
月若无痕_
每次请求都要从数据库中获取最新的数据,所以不能做Cache
0
小骏骏
小骏骏
你的连接释放太慢了,你的应用的时间运行久!尽量控制你的事务时间
小骏骏
小骏骏
回复 @月若无痕_ : 那就尽量缩短 SP调用时间,要不就限制Sp时间内调用的次数。
月若无痕_
月若无痕_
我连接一用完就释放了啊,这样也慢吗?控制事务处理的时间恐怕很难,因为是调用的存储过程
小骏骏
小骏骏
提高等待超时时间!!!
0
wenshao
wenshao
为什么不用druid啊?
月若无痕_
月若无痕_
这个框架可以解决这个问题吗?之前没接触过
0
wendal
wendal

只要并发量超过该属性值就报获取连接超时的错误

我晕, 你请求的连接数量超过最大值必须报错啊, 不然还叫最大值吗

就一个办法: 调大MaxPoolSize, 调整数据库配置的最大可连接数. mysql默认100,改成500就是了

0
小骏骏
小骏骏

引用来自“Wendal”的评论

只要并发量超过该属性值就报获取连接超时的错误

我晕, 你请求的连接数量超过最大值必须报错啊, 不然还叫最大值吗

就一个办法: 调大MaxPoolSize, 调整数据库配置的最大可连接数. mysql默认100,改成500就是了

设置最大值是无上限的,根本问题还在你的应用运行速度的问题。
小骏骏
小骏骏
我们现在用户并发数有600多,对应8个jboss实例,当然我们没用c3p,走的是jboss的jndi连接池,每个实例的连接池最大30,一直都比较稳定!!
小骏骏
小骏骏
可以考虑应用服务器的集群~~~
月若无痕_
月若无痕_
你的意思是,我程序的运行速度太慢,导致连接释放跟不上是吗?但是我程序运行一次差不多三十几毫秒了,这还跟不上吗?
返回顶部
顶部