負荷テスト中にサービスの 1 つで呼び出しをすばやく開始すると、エラーが発生するという問題があります。
「System.ServiceModel.ServerTooBusyException: 信頼できるセッションを作成する要求が RM 送信先によって拒否されました。サーバー 'net.tcp://localhost:10511/ParameterMonitorService' がビジー状態のため、この要求を処理できません。後でもう一度試してください。チャネル開けられなかった。"
maxPendingChannels の値をデフォルトの 4 から 128 に増やしたところ、エラーはなくなりましたが、サービスは例外をスローするのではなく、負荷がかかっているメッセージの処理を停止し、数分後に再開します。
何もドロップしないようで、しばらくハングします。サービスを強化すればするほど、この回復には時間がかかるようです。
このサービスは、ConcurrencyMode Multiple の Per-Call として構成されています。その他の動作設定は次のとおりです。
<serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="100" maxConcurrentInstances="100"/>
<customBinding>
<binding name="Services_Custom_Binding" openTimeout="00:00:20" sendTimeout="00:01:00">
<reliableSession ordered="true" inactivityTimeout="00:10:00" maxPendingChannels="128" flowControlEnabled="true" />
<binaryMessageEncoding>
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binaryMessageEncoding>
<tcpTransport maxPendingConnections="100" listenBacklog="100" />
</binding>
</customBinding>
私たちはちょっと立ち往生しています。どんな助けでも大歓迎です!