質問
私は有効BasicHTTPBindingとSSLを使用してコンソールアプリで展開WCFサービスを提供しています。次の属性が同様に設定されます:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
私も、
にスロットリング動作を設定しています<serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647"
maxConcurrentInstances="2147483647" />
一方私は、同時に複数のクライアント(複数のスレッド)を開始し、サーバ上のトランザクションを実行(負荷テスト用)テストクライアントを作成しました。すべては罰金だが、CPUの使用率がそれほど増加しないサーバー上で、私は、サーバーへの同時呼び出しの数を表示するには、いくつかのログを追加し、それが6の上に行ったことがないことがわかっています。
私はより多くの2倍のパフォーマンスカウンタのロギングコードを見直していると、それは私には罰金だ。
だから私はこのような状況で問題がどこにあるかお聞きしたいですか?私はまだContextModeまたはConcurrencyModeのいずれかの種類を指定していません。
このポストの後、私は私がテストクライアントの別のIntanceを起動するたびに、私の同時サーバーは、私は1つだけのインスタンスを実行している場合、最大同時受信数が2であることができ、そして二つのインスタンスに同じ値があるかどうだろうコールのような2のカウンタの増加を呼び出していることに気づきましたその上の4に行くと。 WCFの数のいずれかの制限があるプロセスに一度から呼び出し?
17月の********に追加しました********
今日は、サーバーが実行されているのと同じマシン上で(50人の同時ユーザーとの)一つのテストクライアントで別のテストを実行しました。この時間は、私はそれが(サーバー= 50によって受信数、すなわち最大同時通話)を表示するために何を望むか正確な結果を取得しています。
しかし、私は同様に他のマシン上でそれを同じことを行う必要があります。誰もがこの上で私を助けることはできますか?
解決 2
私は解決策を見つけた:この問題を引き起こしていたServicePointManagerの接続制限があります。あなただけ設定する必要があり、この制限を削除するには、
System.Net.ServicePointManager.DefaultConnectionLimit = X;
デフォルトの制限は2である。
他のヒント
やクライアントにこの設定を使用します。
<system.net>
<connectionManagement>
<add maxconnection = "200" address ="*" />
</connectionManagement>
</system.net>
ここで200は、クライアントからの制限です。