2016-09-26 19 views
2

私はMySQL DBと対話するJava Webアプリケーションを持っています。私はDB接続を閉じることは決してありません。私は接続インスタンスを扱うためにシングルトンを使います。MySQL接続が終了しましたJava

問題は、私はあまりにも長い間接続を開いたまま、私はアプリのいくつかのアクションを実行しようとした後、私はこのエラーを取得しています、次のとおりです。

The last packet successfully received from the server was 211,710,369 milliseconds ago. The last packet sent successfully to the server was 211,710,398 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem. 

私はautoReconnect=true行うことができますどのように任意のアイデア?または、なぜこれが起こっているのですか?私はデフォルトで自動的に再接続しますが。または、毎回リクエスト後にDBを閉じたままにする必要がありますか?これは、このアプリでは不可欠なパフォーマンスを低下させます。

これ以上の情報はありますか?長い時間のためにも、非アクティブな接続のための接続を生きる保持するmysqlの接続

jdbc:mysql://localhost/<database>?autoReconnect=true 

使用検証クエリの最初の使用この

アライブ接続を維持するために、次の

+2

本当に接続をアイドル状態にしていますか? –

+1

接続が2日半の間アイドル状態になると、接続の開始と終了がパフォーマンスの問題になることはありません。 –

+1

クラシックパフォーマンスに関する懸念 – Drew

答えて

2

に以下を加えることによってそれを行うことができます。そのような接続URLに設定できるプロパティー

url="jdbc:mysql://localhost:3306/confluence?autoReconnect=true" 
0

使用。あなたが長い...そのためのオープンな接続を聞かせてはいけませんが、自動再に関する​​ご質問にお答えしますが

springbootアプリケーションで

http://www.codingpedia.org/ama/tomcat-jdbc-connection-pool-configuration-for-production-and-development/

あなたが設定

datasource.primary.testWhileIdle=true  
datasource.primary.timeBetweenEvictionRunsMillis=10000  
datasource.primary.validationQuery=SELECT 1  
datasource.primary.testOnBorrow=true 
関連する問題