3

ASP.NET Web アプリケーションにパフォーマンスの問題があり、どこを調査すればよいかわかりません。Web アプリケーションで WCF クライアントを有効にすると、Web パフォーマンスが低下し、着信 Web 要求がキューに入れられ始めます。

状況:

通知チャネルとしての ASP.NET アプリケーション (IHttpAsyncHandler): ハンドラーは、クライアント接続を約 20 秒間開いたままにします (ダイレクト プッシュ メッセージの場合)。20 秒後、HTTP 要求が完了して閉じられ、クライアントは数秒後に再接続します。-->これはすべて、約 500 の同時クライアントでうまく動作します。1 秒間に約 20 ~ 50 回の (再) 接続があります。

ロギングを行うために、Web アプリケーションにトレース リスナーがあり、TCP.NET バインディングを使用してログ メッセージを WCF サービスに送信します。IHttpAsyncHandler の各接続/切断は、トレース リスナーに送信されます。

問題:

トレースリスナーがなければ、すべてうまくいきます。トレース リスナーを有効にすると、Web アプリケーションのパフォーマンスが大幅に低下します。Web 要求がキューに入れられ始めます。数秒後、リクエスト キューは数百のエントリに増加します。Web が Web 接続を拒否し始めます。

Trace Listener/WCF Client を有効にすると、パフォーマンスに大きな影響が生じるのはなぜでしょうか。これがサーバー/WCF スロットリングの問題なのか、それともパフォーマンスの制限に関係しているのかはわかりません。これはある種の接続プール制限の問題でしょうか? この問題の原因を特定するのに役立つパフォーマンス カウンターはどれですか?

アイデアをいただければ幸いです。

サーバー A (HTTP ハンドラー): Windows 2003 R2 SP2、IIS 6
サーバー B (WCF ホスト): Windows 2008 R2 SP1、IIS 7、WAS ホスティング


編集: WCF roxy が作成され、TraceListener で受信したすべてのメッセージに対して閉じられます。
WCF クライアントとサーバーの両方のバインディングには、maxConnetions=300 が構成されています。

4

2 に答える 2

0

wcf クライアントを長時間開いたままにしておくか、適切に閉じていませんか? 多くの同時ユーザーがいるこのシナリオで wcf をトレース リスナーとして使用しているのはなぜですか? 最適なソリューションとは思えません。

また、接続制限を増やしてみることもできます: WCF は同時接続を 5 に制限するのはなぜですか?

于 2013-01-04T17:12:42.257 に答える
-1

これはすべてサーバーのパフォーマンスに関係していることが判明しました。サーバーは CPU の最大値近くで実行されています。トレース リスナーを有効にすると、各呼び出しにさらに約 50 ミリ秒かかります。その場合、Web サーバーはすべてのリクエストを時間内に処理できず、キューイングを開始します。

于 2013-02-01T08:57:20.963 に答える