的應用程序,我配置了CloudBees的運行@雲實例運行正常,但過了一段不活動後它就會被取消激活,然後似乎連接池是不正確刷新。恢復從睡眠導致「通信鏈路故障」
當我回到網站,最初的幾個請求超時有:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 4,746,680 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.
sun.reflect.GeneratedConstructorAccessor86.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3092)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2978)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3526)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1989)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2150)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)
com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5022)
org.apache.tomcat.dbcp.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:371)
org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:328)
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:87)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
我使用的CloudBees的-web.xml文件中配置這樣的數據源通過JNDI連接:
<resource name="jdbc/myapp" auth="Container" type="javax.sql.DataSource">
<param name="username" value="myuser" />
<param name="password" value="mypass" />
<param name="url" value="jdbc:cloudbees://myurl />
</resource>
有一些配置我失蹤,或者這是與服務器的連接池配置中的錯誤?
請注意,testOnBorrow將導致SELECT 1在每次從池中獲取連接時執行,例如實際上針對每個執行的查詢。使用minEvictableIdleTimeMillis,timeBetweenEvictionRunsMillis和numTestsPerEviction這裏http://juststuffreally.blogspot.de/2007/10/broken-pipes-with-tomcat-and-dbcp.html描述的某些超時後驅逐連接可能是DBCP池一個更好的主意。或者,你可以嘗試testWhileIdle而不是testOnBorrow。 –