ODP.Netを使用してASP MVCページからOracleデータベースに接続するWebページがあります。何らかの理由でアプリケーション・プールがリサイクルされると、ユーザーの負荷が重い場合、内部Oracleクラスからの接続タイムアウト・エラーはほとんど発生しません。C#アプリケーション・プールのリサイクル時のOracleデータベースへの接続タイムアウト
内部例外発生しました。:stackTrace:OracleInternal.ConnectionPool.PoolManager`3.Get(のConnectionString csWithDiffOrNewPwd、ブールbGetForApp、文字列affinityInstanceName、ブールbForceMatch)で
どのように我々は、このシナリオを扱うことができますか?このエラーの原因は何でしょうか?
これはアプリケーションプールのリサイクルには関係しないと思います。問題は最大プールサイズに達したことです。コードのどこかで接続を閉じるのを忘れた可能性があります。その結果、プールへの接続がプールに戻って他の要求を処理しないか、プールサイズが小さすぎます –
接続を閉じるのを忘れた場合、 GCがそれらのオブジェクトを収集する場合にのみ発生します。したがって、かなり長い時間プールに返されない接続が多数あり、プールの最大サイズに達することになります。 –
USINGブロック内で接続を行っているので、接続が終了しています。この問題はたまにしか起こらないので、接続が閉じられていないと、しばしば正しく表示されるはずです。 – Zeus