too many connections ! 急, 谢谢!

hellokitty007 2008-05-11 03:35:51

spring + hibernate + mysql

大家请帮我看看:


为什么项目一发布到Tomcat 上就会经常发生

org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Data source rejected establishment of connection, message from server: "Too many connections")
org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225)
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
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.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
org.hibernate.loader.Loader.doQuery(Loader.java:673)
..............................................
..............................................


因为在测试中 不会发生这种情况,而发布到Tomcat 就会发生, spring配置应该没有问题
applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql:///test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.connection.release_mode">
auto
</prop>
<prop key="hibernate.autoReconnect">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/kk/entity/User.hbm.xml</value>
</list>
</property>
</bean>

<bean id="userDAO" class="com.kk.dao.impl.UserDAOImpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

<bean id="actUser" class="com.kk.business.impl.ActionUserImpl">
</bean>

</beans>







所以一定是发布的时候出了什么问题 (也许不是Tomcat ,或是我的配置有什么不对吗?)










...全文
603 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhj92lxs 2008-05-11
  • 打赏
  • 举报
回复
支持 连接没关。
a506690 2008-05-11
  • 打赏
  • 举报
回复
不好意思,才刚学这个,不是太懂...
来学习下..
dracularking 2008-05-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hellokitty007 的回复:]

怪就怪在 测试的时候随便怎么连都不会 too many,

而一到了发布上去后 就会 too many ,


这个问题对于新手来说很棘手的,晕死
[/Quote]
仔细想想测试到发布到底有哪些变化 类库 配置?还是什么
Shine_Panda 2008-05-11
  • 打赏
  • 举报
回复
支持 连接没关。
chenhongxin 2008-05-11
  • 打赏
  • 举报
回复
可能连接超过mysql设置的上限!
2. 程序问题,建立了连接不关闭!
3. 在没有使用连接池的情况下,每次都建立一个新的连接到数据库(即使每次操作完毕都及时准确的close了),但是由于可能建立到数据库连接的频率很高(比如在for循环里),那么会迅速建立大量的tcp连接到mysql的指定端口,OS在关闭tcp连接是有一定的延迟的,也是有一定数量限制的,所以就会出现无法连接的情况(connection refused)。

hellokitty007 2008-05-11
  • 打赏
  • 举报
回复

但是 怎么样可以检查 有没有关闭连接?

spring+hibernate 不是可以自动关闭吗
awusoft 2008-05-11
  • 打赏
  • 举报
回复
检查一下没有关闭连接
hellokitty007 2008-05-11
  • 打赏
  • 举报
回复

如果把 mySql 的连接数改为4000也没有意义啊,

4000次查询后不是照样会崩溃掉的吗
hellokitty007 2008-05-11
  • 打赏
  • 举报
回复

怪就怪在 测试的时候随便怎么连都不会 too many,

而一到了发布上去后 就会 too many ,


这个问题对于新手来说很棘手的,晕死
xiyuan1999 2008-05-11
  • 打赏
  • 举报
回复
1. 连接池设置问题 注意上限
2. 使用了太多的连接没有关闭导致


你应该属于第二种
没有及时的关闭连接
guobingyou 2008-05-11
  • 打赏
  • 举报
回复
关注,up
bootupnow 2008-05-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hellokitty007 的回复:]
页面超过100条查询就会 too many connections

但是我在eclipse里测试的时候 连续查询 300条以上都不会 too many , 晕~啊

mySql 默认100连接, 我没有改过
[/Quote]
偶学习的时候发生过这种情况。
自己的总结如下
1. 可能连接超过mysql设置的上限!
2. 程序问题,建立了连接不关闭!
3. 在没有使用连接池的情况下,每次都建立一个新的连接到数据库(即使每次操作完毕都及时准确的close了),但是由于可能建立到数据库连接的频率很高(比如在for循环里),那么会迅速建立大量的tcp连接到mysql的指定端口,OS在关闭tcp连接是有一定的延迟的,也是有一定数量限制的,所以就会出现无法连接的情况(connection refused)。

对于第3种情况,特别需要关注之。
awusoft 2008-05-11
  • 打赏
  • 举报
回复
是不是用了连接不关闭啊?
hellokitty007 2008-05-11
  • 打赏
  • 举报
回复
页面超过100条查询就会 too many connections

但是我在eclipse里测试的时候 连续查询 300条以上都不会 too many , 晕~啊

mySql 默认100连接, 我没有改过
nanjg 2008-05-11
  • 打赏
  • 举报
回复
加大dbcp线程数看看

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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