2011-09-09 35 views
0

Webアプリケーションで次のような問題が発生します。 私はTomcat 7とConnection poolingを使用しています。私のデータベースはMySQLです。Tomcatの接続プーリング、アイドル状態の接続、接続の作成

私は次の例外を取得しています:

Communication link failure: java.io.EOFException, underlying cause: null ** BEGIN NESTED EXCEPTION ** java.io.EOFException STACKTRACE: java.io.EOFException at 
com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1394) at 
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1538) at 
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1929) at 
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167) at 
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278) at 
com.mysql.jdbc.Connection.execSQL(Connection.java:2251) at 
com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1586) at 
org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStat 
ement.java:96) at 
org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStat 
ement.java:96) at configuration.Login.doPost(Login.java:104) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.jav 
a:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403) at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301) at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java 
:162) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java 
:140) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at 
java.lang.Thread.run(Thread.java:662) ** END NESTED EXCEPTION ** 

私はある程度の期間後に何らかの理由でプールされた接続が原因時間制限か何かに多分閉じたときにこのエラーが発生したことを知ります。 私の質問は、プールに接続していないときに接続プールが新しい接続を作成してはいけないということです。この時点では誰もアプリケーションを使用していないため、トラフィックはトラフィックに起因していません。私はアプリケーションを使用し始めるプールされた接続が作成されているこれらの接続はアイドルですか?これらの接続が閉じられない方法はありますか?しかし、私はそれをサーバー上の他のアプリケーションからの接続を浪費しないでくださいできますか?私は近くてmanualy場合、これは.......

//編集正常ではありませんworking.But新しい接続が作成されたいくつかの時間とアプリが起動した後、アプリケーションを使用しようとし続ける場合も

MYSQL Adminのすべてのアクティブな接続がこのエラーを再度表示します。

答えて

1

バックグラウンド接続があります。

プールの定義方法を教えてください。

ここにいくつかの便利なオプションがあります。

minEvictableIdleTimeMillis="60000"maxActive="100" minIdle="10" maxIdle="50" maxWait="10000" 
    removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" 

そしてautoReconnect=true

url="jdbc:mysql://localhost:3306/db?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" /> 
+0

がyou.IがautoReconnect.Iは私computer.Iのからないでいるため午前中4時間では、見つけたことを行います使用しようwiilありがとうURLに追加データベースへの最初のヒットが失敗することがあります。接続が作成されました。接続がnullのときにforループを使用するとよいでしょうか? – nikosdi

関連する問題