0

最近、Apache DBCP 接続プールから C3P0 に切り替え、ログを調べて、接続タイムアウトの問題があることを確認しました。過去に DBCP と Tomcat でこれを経験したことがないので、構成の問題なのかドライバーの問題なのか疑問に思っています。

サーバーがしばらくアイドル状態になった後にページをロードすると、一部のコンテンツが送信されないことがわかります (サーバーが接続などを取得できないため)。ページを更新すると、すべてのコンテンツが表示されます。

とにかくMySQLを使用しているので、MySQL接続プールの使用を推奨する人はいますか? MySQL 接続プールについて、どのような経験がありますか?

ウォルター

4

2 に答える 2

3

使用しているデータベースが、非アクティブ状態が一定時間続くと接続をタイムアウトするように構成されている場合、接続は既に閉じられているため、プールから借用すると使用できなくなります。

データベース サーバーを再構成できない場合、または再構成したくない場合は、C3P0 (および他のほとんどの接続プール) を構成して、接続がプールから借用されたときにテスト クエリを使用して接続をテストできます。詳細については、C3P0 ドキュメントの関連セクションを参照してください

編集:もちろん、その通りです。DBCP プールに最大アイドル時間が構成されていた可能性もあり、タイムアウトになる前にプールから削除されます。とにかく、テスト クエリを使用するか、接続がタイムアウトになる前にプールから削除されていることを確認することで、問題を解決できます。

于 2009-12-07T15:44:35.197 に答える
1

別の接続プールへのリンクを追加するだけです。BoneCP ( http://jolbox.com ); C3P0 と DBCP の両方よりも高速な接続プール。

C3P0 や DBCP と同様に、アイドル接続テストを構成して、説明したシナリオを回避してください (おそらく、MySQL の wait_timeout 設定が開始され、通常は 8 時間に設定されます)。

于 2009-12-08T15:53:31.547 に答える