3

Play Framework 2.2.1MySQL 5.5およびsorm 0.3.10を使用しています

MySQL は指定されたアイドル タイムアウトの後に非アクティブな接続をドロップするため、アプリで次の例外が発生します。

[CommunicationsException: Communications link failure The last packet successfully received from the server was 162 701 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.]

私の知る限り、sorm は c3p0 接続プールを使用しています。c3p0 または sorm を設定して、指定された遅延で mysql をキックしたり、接続が切断された後に自動的に再接続したりすることは可能ですか?

4

2 に答える 2

2

0.3.13-SNAPSHOTof SORM では、デフォルト設定の のtimeoutパラメータが導入されています。この設定は、基礎となる接続がアイドル状態になることができる秒数を決定します。タイムアウトに達すると、一種の「キープアライブ」リクエストがデータベースに送信され、タイマーがリセットされます。通常のクエリが行われると、タイマーはリセットされます。実装は単にC3P0 に依存しています。Instance30idleConnectionTestPeriod

さらなる議論、提案、レポートについては、Issue Tracker で関連するチケットにアクセスするか、別のチケットを開いてください。関連するチケットに苦情がなければ、この変更は 0.3.13 リリースになります。

于 2014-01-16T16:51:00.770 に答える
1

この問題を c3p0 で解決するのは非常に簡単ですが、c3p0 を使用しているかどうかを再確認します。BoneCP はデフォルトの play2 接続プールです。この問題も BoneCP で簡単に解決できます。

c3p0 では、config params maxIdleTimemaxConnectionAge、または (さらに良いことに) 接続テスト体制が役立ちます。http://www.mchange.com/projects/c3p0/#configuring_connection_testingを参照してください

play2 で c3p0 を使用する場合は、https: //github.com/swaldman/c3p0-play を参照してください。

于 2014-01-16T08:54:45.743 に答える