0

JDBCを使用してOracle11gデータベースに接続しているTomcat7で実行されているJavaWebアプリがあります。このアプリには、JQueryを使用してデータベースにデータを挿入するサーブレットに対して(.post関数を使用して)Ajaxリクエストを行うJSPが含まれています。システムの負荷が軽い場合でも、データベースにアイドル状態の接続が表示され始めます。SQLDeveloperでv$sessionをチェックしてそれらを観察します。パフォーマンステストを実行したところ、約2分で150の接続を持つデータベースサーバーが最大になりました。私は何度もコードを読み終えており、finallyブロック内のすべてのResultSet、Statements、およびConnectionsを常に閉じています。この問題は、JSPが複数のAjaxリクエストを同時に送信するときに発生し、マルチスレッドの問題である可能性があると思いましたが、繰り返しになりますが、コードを確認し、スレッド間でデータが共有されていません。データソースから接続を取得して接続を閉じるコードは、すべてのDAOクラスが継承する抽象基本クラスにあります。誰かがこれを引き起こす可能性のあるものを知っていますか?多くのクラスが関係しているので、どのソースコードを投稿すればよいかわかりませんでした。見たい場合はお知らせください。ご協力いただきありがとうございます。

4

1 に答える 1

0

maxWaitを10000に設定して、タイムアウトに注意してください。これは、Webアプリケーションの一部のコンポーネントがデータベース接続を閉じていないことを示しています。

また、maxActiveをたとえば15に制限してみて、それがアプリケーションとOracleで同時に開かれる接続の数の両方にどのように影響するかを確認してください。

于 2012-06-26T12:33:15.063 に答える