5

WCF サービスは初めてです。

MSMQ をリッスンするサービスがあります。サービスの maxConcurrentInstances および maxConcurrentSessions は 1 に設定されます。その結果、キューに大量のメッセージが入り、メッセージの処理が遅くなります。

serviceThrottling 要素のmaxConcurrentInstances属性と maxConcurrentSessions属性の違いは何ですか 。

現在、120 メッセージを提供するのに 10 分かかり、非常に遅いです。

サービスのパフォーマンスを向上させるための理想的な値は何ですか。

前もって感謝します

4

1 に答える 1

4

maxConcurrentInstances: 同時実行モードとインスタンス コンテキスト モードに関係なく、同時に要求を処理できるサービス クラスのインスタンスの最大数。

maxConcurrentSessions: 同時にアクティブな WCF セッションの最大数。


同時実行モードが NO マルチスレッドに設定されていると仮定します。

IF Instance context mode = Per session 
   THEN  Max number of requests processed in parallel = Min(maxConcurrentInstances, maxConcurrentSessions)

IF Instance context mode = Per call 
   THEN Max number of requests processed in parallel = maxConcurrentInstances

IF Instance context mode = Single 
   THEN Max number of requests processed in parallel = 1

同時実行モードがマルチスレッドに設定されていると仮定します。

1 つのインスタンスで複数のリクエストを処理できるようになりましたが、同時実行の問題に注意する必要があります。


重要な質問は、インスタンス コンテキスト モードをどのように選択するかということです。

  • マルチスレッド プログラミングに自信がない: PerSessionまたはPerCallに固執する
  • 同じクライアントからの呼び出しの間、サービス レベルでデータを保持する必要はありません。PerSession を回避します。
  • サービスの新しいインスタンスを作成するのは非常にコストがかかります。Single を使用ますが、同時実行の問題に対処する準備をしてください。

その後、インスタンス (PerCall の場合) とセッション (PerSession の場合) の最大数を調整する必要があります。通常、100 などの任意の数値に設定することから始めて、処理が速くなるかどうかを確認します。もしそうなら、大丈夫です。そうでない場合は、インスタンスが十分に迅速に作成できるかどうかを確認してください。

于 2012-07-25T07:34:47.237 に答える