1

次の問題に直面しています:

一部のユーザーは、私の Web アプリケーションを試すと文句を言います。

私が遭遇するエラーは次のとおりです。

IP: System.Web.HttpApplicationState

Agent: IE8

AgentDtails : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2)

Refrer: https://xxxxxxxxxxxxxxxxxx.aspx?guid=cb083ebc-d1a8-49ff-b00d-acf208dd67ac

Plateform: WinXP
05/09/2013 09:20:37
Error in: https://xxxxxxxxxxxxxxxxxx.aspx?guid=cb083ebc-d1a8-49ff-b00d-acf208dd67ac
 Error Message:
 Error Message: Thread was being aborted.

そして時折 :

Error Message:ERROR [08S01] [Informix .NET provider]Communication link failure.

 Error Code: -11020
 MEssage: [Informix .NET provider]Communication link failure.

これらのエラーは、特定のページまたはメソッドからのものではありません。これらのエラーは、時々、別のページからランダムに発生します!!


私の接続文字列は次のとおりです。

 <add key="connection" value="User Id=XXX;Password=XXXX;Host=aa1;Server=st1;Service=st1;Database=doc; Client Locale=ar_ae.1256; Database Locale=ar_ae.8859-6; Protocol=olsoctcp;pooling=true;Min Pool Size=4;Max Pool Size=200;"/>
4

1 に答える 1

3

プーリングを使用しているようです。HTTP リクエストごとに DB に接続する必要があるため、パフォーマンスが向上しますが、そのようなプールはエラーが発生しやすい必要があります。環境内の何か (ルーター、ファイアウォール) が、DB サーバーと db プールの間の長期的で非アクティブな接続が実際には無効であり、切断できると考える場合、問題があります。次に、そのような接続を使用しようとすると、db プールは、そのような接続は良好で使用可能であると認識しますが、閉じられて使用できません。

このようなエラーを防ぐ方法は、プールに依存します。一部のプールには、接続が有効かどうかを確認するための特別なクエリがあります。正常にチェックされた接続のみが取得されます。一部のプールにはタイムアウト時間があり、接続がその時間使用されなかった場合は解放されます。使用するプールの詳細を読んで構成する必要があります。使用している .NET クライアントのバージョンは表示されませんでした。バージョン 3.70 の「IBM Informix .NET プロバイダ リファレンス ガイド」で、次のことがわかりました。

Pooling、Max Pool Size、Connection Life Time、および Min Pool Size 接続文字列属性を使用して、接続プールを制御します。

Idle Timeout 内部パラメーターは、プールから接続を削除するための標準プロトコルであり、接続がサーバーで無期限にアクティブなままになるのを防ぎます。Idle Timeout の値は 120 秒で、接続文字列に新しい値を設定しても変更できません。Idle Timeout を使用すると、接続が接続プールで 120 秒以上使用されていない場合、接続は閉じられ、プールから削除されます。

私にとっては 2 分間で十分ですが、別のバージョンのクライアントを別の設定で使用している可能性がありますか?

于 2013-05-09T12:41:21.553 に答える