使用Hibernate和mysql的连接太多 [英] Too many connections using Hibernate and mysql

查看:76
本文介绍了使用Hibernate和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>


解决方案


JAVA ISSUE < h2>

请检查此答案: https://stackoverflow.com/a/10785770/

MYSQL ISSUE



<您需要以超级用户身份登录。然后执行此代码:

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆