Oracleデータベースに接続するMuleアプリケーションがあります。アプリケーションは、SQLストアドプロシージャの実行を可能にするSOAP APIです。私のコネクタは接続プーリングを使用するように設定されており、接続自体を監視しています。プールの最大サイズは20ですが、データベースへの呼び出し時に、それらを開くことができます(netstat -ntl | grep PORTNUMBER)。非アクティブ後のデータベース接続をクローズ
tcp4 0 0 IP HERE OTHER IP HERE SYN_SENT
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 0 0 IP HERE OTHER IP HERE ESTABLISHED
tcp4 10 0 IP HERE OTHER IP HERE ESTABLISHED
コールが完了すると、一定期間後に接続が切断されることが予想されます。これは起こりません。私は、アプリケーションがサーバー上で動作しているときに、接続がまだ7月から開いていることに気付いたことがあります(これは数ヶ月前です)。
私がこれまで実際に数秒後に接続を閉じることがわかった唯一の方法は、XAトランザクションを有効にして接続タイムアウトを設定することです。しかし、これはアプリケーションのパフォーマンスを完全に失い、不要なオーバーヘッドになります。
XA接続を使用せずにこのようなタイムアウトを追加する方法を教えてください。 20秒間使用しないとデータベース接続が閉じられるようにしたい。
はあなたに
編集ありがとう: 一般的なデータベースコネクタが使用されている - 私たちは、データベースに許可される接続の最大数を持っているMuleのバージョン3.8.0 を、私たちは、このフローの実行中の複数のインスタンスを持っています。これは、あるインスタンスによって接続が予約され、他のインスタンスが新しい接続を取得できなくなることを意味します。
私たちが持っていた特定の問題は、それが実行された最後の時間は、数週間前だったにも関わらず、1つのインスタンスがまだ120台の接続が予約していたことでした。 2番目のインスタンスがより多くの接続をリクエストしたとき、データベース側の最大値が150であるため30にしかならなかった。
私は自分の質問を編集しました。 – DenCowboy