0

プロジェクトのどこかで mysql へのいくつかの接続が閉じられていないという問題があり、数日後にアプリケーションが非常に遅くなり、本質的にアプリケーション サーバーを再起動する必要があります。

この問題の原因を見つけるために、キーが接続を行っているクラスとメソッド名であるマップを作成し、値として、そのメソッドが接続を確立/閉じるたびに増分および減分されるカウントを作成しました。これにより、データベースへの接続を確立する方法が多くの接続を開いたままにしていることがわかると思いましたが、これは不正確であることが判明しました。

コードを手動で調べてソースを見つける以外に、閉じられていない接続のソースを見つけるために何をすることをお勧めしますか?

ありがとう。

4

3 に答える 3

0

解決策の 1 つ (簡単ではありません) は、BTrace を使用することです。java.sql.connectionコードを傍受するスクリプトを作成します

https://kenai.com/projects/btrace

ただし、要件は次のとおりです。

  1. Oracle JDK6+を使用するか
  2. または、Solaris で Sun JDK5 を使用してアプリケーションを実行します。
于 2013-06-14T17:15:19.560 に答える
0

Apache DNSP など、放棄された接続をトラップできる接続プールを使用します。

于 2013-06-15T01:22:16.283 に答える