我在我的项目中使用Spring和Hibernate。我用这样的道具
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">${chassis.storage.hibernate.dialect}</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.jdbc.batch_size">${chassis.storage.hibernate.batch_size}</prop>
<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.max_size">50</prop>
<prop key="hibernate.c3p0.timeout">300</prop>
<prop key="hibernate.c3p0.max_statements">50</prop>
<prop key="hibernate.c3p0.idle_test_period">3000</prop>当我编写一些数据时,我使用这样的代码
getHibernateTemplate().execute(new HibernateCallback<Void>() {
@Override
public Void doInHibernate(Session session) throws HibernateException, SQLException {
for (Data data : datas) {
session.persist(data);
}
session.flush();
return null;
}
});但我有个例外
原因: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:数据源拒绝建立连接,来自服务器的消息:“连接太多”
我使用netstat -an | grep 3306并看到许多连接。有什么问题,你怎么看?
发布于 2012-12-28 08:57:15
问题出在数据源上。我用过
org.springframework.jdbc.datasource.DriverManagerDataSource现在我使用org.apache.commons.dbcp.BasicDataSource,它工作得很完美!
发布于 2012-12-27 11:59:18
您的<prop key="hibernate.c3p0.max_size">50</prop>连接最多,而应用程序是唯一访问该数据库实例的应用程序吗?看起来不是这样的。即使您的连接仍然处于打开状态(我在使用c3p0时对此表示怀疑),您也设置了最多50个连接。另一种可能是其他地方的连接泄漏、JDBC代码或配置( Hibernate,Spring ),在这里您可以获得额外的连接。
更新:也许MySQL连接max_connections配置的数量已更改为较低的值。
UPDATE:使用例如MySQL工作台,检查数据库实例活动连接来自何处。
https://stackoverflow.com/questions/14054042
复制相似问题