I lost this fact a bit:
show status like 'con%'; +-----------------------------------+-------+ | Variable_name | Value | +-----------------------------------+-------+ | Connection_errors_accept | 0 | | Connection_errors_internal | 0 | | Connection_errors_max_connections | 0 | | Connection_errors_peer_address | 0 | | Connection_errors_select | 0 | | Connection_errors_tcpwrap | 0 | | Connections | 10535 | +-----------------------------------+-------+
I read some kind of similar question here, but the problems are in cases where not mine, so I'm here.
I use MySQL and Hibernate. In my webapp there is this static HibernateUtil class for accessing the database:
import org.apache.log4j.Logger; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final Logger log = Logger.getLogger(HibernateUtil.class); private static SessionFactory sessionFactory; static { try { sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); } catch (Throwable ex) {
Then I call the util class, as in this example:
private MyTable getMyTable() { try { Session session = currentSession(); // some prepared statement return myTable; } catch (HibernateException e) { errorSession(); return null; } finally { closeSession(); } }
So basically I close the connection with success (closeSession) and by mistake (errorSession). Now why do I see so many connections in the MySQL console?
source share