2

WindowsサービスでホストされているWCFWebサービスがあります。

サービスは、次の属性(VB)を使用して構成されます

<ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Multiple,
InstanceContextMode:=InstanceContextMode.PerCall,
UseSynchronizationContext:=False)>

一度に50個のスレッドを作成するテストクライアントを作成しました。すぐに開始し、すべてWCFサービスの操作をクエリします。最初の30ほどのオープニング(client.open())は機能しますが、その後、サービスを開こうとしたときにタイムアウトが発生したため、クライアントでオープニングを実行できなかったというエラーメッセージが表示され、EndPointNotFoundExceptionが発生します。 。(私が呼び出している操作は、それが重要な場合はすべて同期しています。)

そのような動作を期待できるので、単にこれらの例外を回避する必要がありますか、それとも上記またはその他の設定の一部を確認する必要がありますか?(私はNetTcpBindingを使用しています。)

私が見ているのは、クライアントが一度に作成されたスレッドの要求を同時に処理するため、上記の設定は、サービスを同時にマルチユーザー対応にするという望ましい効果をもたらします。

しかし、理想的には、タイムアウトの例外は発生しません。むしろ、タイムアウトするよりも、クライアントが応答を受け取るまでの時間を長く待ってほしいと思います。

何か案は?

皆さんありがとう!

4

1 に答える 1

1

次のような設定を確認してください。

<behavior name="CommonServices_Behavior">
  <serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="50"
   maxConcurrentInstances="50" />
</behavior>

これらの値のいくつかは、machine.configファイルでデフォルトが設定されていることを思い出しているようです。NetTcpBindingをチェックするためのMaxConnections値もあります。

于 2012-09-12T15:12:53.930 に答える