MySql连接异常解决
這兩天遇到一個mysql連接的問題,找人弄了好幾天也沒弄好,先看一下報錯信息:
====================================================================
org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection ???????
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596) ???????
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) ???????
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:334) ???????
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) ???????
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ???????
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) ???????
at hitec.dms.element.service.biz.impl.DmsMonitorThreadServiceImpl$$EnhancerByCGLIB$$a293fc8f.findList(<generated>) ???????
at hitec.influence.platform.quartz.ThreadListener.monitorThread(ThreadListener.java:117) ???????
at hitec.influence.platform.quartz.job.GatherJob.process(GatherJob.java:12) ???????
at hitec.influence.platform.quartz.QuartzDispatcher$QuartzJob.execute(QuartzDispatcher.java:377) ???????
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ???????
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525) Caused by: org.hibernate.exception.JDBCConnectionException: Cannot open connection ???????
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97) ???????
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) ???????
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) ???????
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449) ???????
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)????????
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)????????
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85) ???????
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354) ???????
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555) ???????
... 11 more Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. ???????
at sun.reflect.GeneratedConstructorAccessor248.newInstance(Unknown Source) ???????
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ??????
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ???????
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) ???????
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117) ???????
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:350) ???????
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2393) ???????
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430) ???????
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215) ???????
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813) ???????
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) ???????
at sun.reflect.GeneratedConstructorAccessor43.newInstance(Unknown Source) ???????
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ???????
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ???????
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) ???????
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399) ???????
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334) ???????
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) ???????
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) ???????
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148) ???????
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) ???????
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) ???????
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81) ???????
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) ???????
... 16 more Caused by: java.net.SocketException: 打開的文件過多 ???????
at java.net.Socket.createImpl(Socket.java:447) ???????
at java.net.Socket.<init>(Socket.java:421) ???????
at java.net.Socket.<init>(Socket.java:241) ???????
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257) ???????
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300) ???????
... 34 more
====================================================================
看到這些報錯信息,一直以為是代碼里的hibernate建立連接后一直沒有斷開,直到連接空閑8小時后mysql給斷開不讓連接,后來一同事以前遇到過這樣的問題,其實一直沒有注意到下方的一個異?!癿ore Caused by: java.net.SocketException: 打開的文件過多”,因為我的程序是部署在linux上,因為linux有一個ulimit最大打開文件個數(shù),默認是1024(ulimit -a即可查看相關(guān)信息),后來查到是別人封裝好的jar包里有一個InputStream只有新建打開沒有關(guān)閉,一直在循環(huán)新建打開文件,直到打開超過1024報錯,把inputstream加上關(guān)閉就OK啦!
?
轉(zhuǎn)載于:https://www.cnblogs.com/zunpeng/p/5391644.html
總結(jié)
以上是生活随笔為你收集整理的MySql连接异常解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态代理,动态代理设计模式 ,JDK动态
- 下一篇: 浅析tomcat原理