.NET用Oracle.DataAcess.dllを使用してOracleデータベースへの接続および問合せを実行するIIS 7でホストされているWebアプリケーションがあります。 先週、このコンポーネントによってスローされた多数のエラーが突発的に発生しました。「接続要求がタイムアウトしました。ODP.NET接続要求のタイムアウトが発生しました
数時間のデバッグ後、接続要求がタイムアウトし、コード番号が-1000(oracle.DataAccessのORAエラーがスローされませんでした)のエラーが発生しているというエラーが実際に発生していることがわかりました。 Oracleデータベースでは、そのマシンの接続が1つしかなく、「非アクティブ」状態になっていました。 接続が1つしかありませんでしたが、デバッグ時に接続を開こうとすると実際にタイムアウトしました。
私は接続プール戦略を使用していませんが、デバッグモードで表示されていたので、最大接続数が100であり、タイムアウトが15秒であるという(デフォルトでは値を指定していなくても)それは生存時間が0であることを意味します。つまり、そのマシン上のアプリケーションは100の接続を処理できます。
これで、「接続要求がタイムアウトしました」という理由がわかりません。私のアプリケーションが1つの接続と5つの接続を持っていた場合に発生した接続数がわずかであることを示しているDBが、100接続まで(デフォルトの接続プールの設定に従って) 100のうち)。
私は私のアプリをリサイクルした後、具体的にこの問題を解決することができたが、それは既に一度ので、これは、このための解決策ではありません以上のことを起こった...
は何か、私はだとされていることに注意します行方不明?
私のアプリケーションは実際に見たより多くの接続を使用していますか?
*アップデート:私はOracle.DataAccessと「WaitForRegularConnection」メソッドで立ち往生している他の多くのスレッドの「PopulatePool」メソッドで立ち往生多くのスレッドがあることをデバッグ中に見つけた ...
Oracleへ
これは断続的に起こっているのでしょうか、それともいつも起こっていますか? – Gilles
断続的に発生します...数時間ごとに、これが私のサーバーで発生します。 –
デバッグトレースを有効にして情報を共有してください。 TraceLevel 2(接続プーリングの統計情報)で十分です。 http://docs.oracle.com/cd/B28359_01/win.111/b28375/featDebug.htm –