使用Hibernate和mysql的连接太多 [英] Too many connections using Hibernate and mysql
问题描述
我在Spring 3.0中使用Hibernate 3和mysql sever 5.5 for myweb应用程序
我得到异常,因为连接太多......
>我创建session的java文件如下:
public class DBConnection {
static {
}
public Session getSession(){
Session session = null;
SessionFactory sessionFactory = null;
sessionFactory = new Configuration()。configure()。buildSessionFactory();
session = sessionFactory.openSession();
返回会话;
}
}
我打电话这个方法在我需要的会议中
作为
会话会话=新。DBConnection的()的getSession();
之后
器transaction.commit();
我通过使用
session.close();
请帮我解决问题.......
我的hibernate.cfg.xml是:
<?xml version ='1.0'encoding = 'UTF-8' >?;
<!DOCTYPE hibernate-configuration PUBLIC
- // Hibernate / Hibernate配置DTD // EN
http://hibernate.sourceforge.net/hibernate-configuration-3.0。 DTD>
< hibernate-configuration>
< session-factory>
< property name =hibernate.connection.driver_class> com.mysql.jdbc.Driver< / property>
< property name =hibernate.connection.url> jdbc:mysql:// localhost:3306 / dbname< / property>
< property name =hibernate.connection.username>根< / property>
< property name =hibernate.connection.password> lax< / property>
< property name =hibernate.connection.pool_size> 100< / property>
< property name =show_sql> true< / property>
< property name =dialect> org.hibernate.dialect.MySQLDialect< / property>
< property name =hibernate.hbm2ddl.auto>更新< / property>
< property name =>< / property>
< property name =hibernate.connection.release_mode> on_close< / property>
< / session-factory>
< / hibernate-configuration>
MYSQL ISSUE
JAVA ISSUE < h2>
请检查此答案: https://stackoverflow.com/a/10785770/
<您需要以超级用户身份登录。然后执行此代码:
SET GLOBAL MAX_CONNECTIONS = 200;
然而,这仅仅直到MYSQL服务器重启。如果您想永久改变它,您可以在MYSQLD部分添加以下内容。
MAX_CONNECTIONS = 500
OR
如果您在过程中数据库服务器,那么您可能会达到一个限制,并且不允许开始新的操作。
要查看是否属于这种情况,请查看您的过程通过输入以下命令,MySQL Monitor提示符:
show processlist;
然后您会看到持续的过程。每个人都有一个ID,你可以在MySQL监视器中通过键入以下命令来杀死他们:
kill 2309344;
I am using Hibernate 3 and mysql sever 5.5 for myweb application with spring 3.0
I am getting exception as Too many connections......
My java file where I create session is as follows:
public class DBConnection {
static{
}
public Session getSession(){
Session session = null;
SessionFactory sessionFactory= null;
sessionFactory = new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
return session;
}
}
and I call this method where I need session
as
Session session=new DBConnection().getSession();
and after
transaction.commit();
I close session by using
session.close();
please help me in solving problem.......
my hibernate.cfg.xml is :
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/dbname</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">lax</property>
<property name="hibernate.connection.pool_size">100</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name=""></property>
<property name="hibernate.connection.release_mode">on_close</property>
</session-factory>
</hibernate-configuration>
JAVA ISSUE
Please check this answer : https://stackoverflow.com/a/10785770/598424
MYSQL ISSUE
YOU NEED TO LOGIN AS SUPERUSER. THEN EXECUTE THIS CODE:
SET GLOBAL MAX_CONNECTIONS = 200;
HOWEVER, THIS ONLY LASTS UNTIL THE MYSQL SERVER RESTARTS. IF YOU WANT TO CHANGE IT PERMANENTLY, YOU CAN ADD THE FOLLOWING LIKE UNDER MYSQLD SECTION.
MAX_CONNECTIONS = 500
OR
IF YOU HAVE TOO MANY PROCESSES LINGERING AROUND ON THE DATABASE SERVER, THEN YOU MAY REACH A LIMIT AND NO NEW ONES WILL BE ALLOWED TO BE STARTED.
To see if this is the case, take a look at your processes from the MySQL Monitor prompt by typing:
show processlist;
Then you will see the lingering processes. Each has an ID, and you can kill them by process ID right in the MySQL Monitor by typing:
kill 2309344;
这篇关于使用Hibernate和mysql的连接太多的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!