まず第一に、申し訳ありませんが、私は流暢ではありません。
コール数/秒率が高い環境でWCFサービスが機能しなくなる理由を理解しようとしています。タイムアウトを増やすだけで問題が解決するかどうかはわかりません。
2つのWebサービスがあります。
- 1つ目は、IIS 7.5、Windows Server 2008 R2 Enterprise SP1 x64、AppFabric(およびWAS)でホストされています。
- 次に、Windowsサービス、Windows 2003 R2SP1x86でホストされます
両方のWebサービスの構成は最小限です。認証なし、トランザクションなし、メッセージの特別な処理なし。バインディングを確認してください。
<netTcpBinding>
<binding transactionFlow="false">
<security mode="None">
<message clientCredentialType="None" />
<transport clientCredentialType="None"></transport>
</security>
<reliableSession enabled="false"/>
</binding>
</netTcpBinding>
現実性と速度のために、Net.Tcpバインディングを使用しようとしています。
事実1-Net.Tcpバインディングが主な理由
負荷が高くなると、チャネルNet.Tcpは機能を停止します。それでおしまい!しかし、BasicHttpはまだ魅力のように機能しています。
WindowsService:チャネルnet.tcpは、動作を再開する前に数分間(3m〜10m)停止します(ITSELFによって、何も変更せずに。Goblinsは懸命に動作しています)。
AppFabric / IIS / WAS:チャネルnet.tcpは停止します。手動で再起動する必要があります。
BasicHttpBindingの構成はnet.tcpに似ています。セキュリティ上の懸念などがなくても、メッセージを処理する必要はありません。
事実2-ログの種類なし
何が起こっているのかを理解するための種類、ヒント、トリックを見つけることができませんでした。メモリ、イベントログ、System.Diagnosticsをダンプしてみましたが、何も関係ありません。最も関連性の高いヒントは、SMSvcHost4.0.0.0からのエラーです。
複製されたソケットのディスパッチ中にエラーが発生しました:このハンドルは現在、プロセスでリークされています。ID:2272ソース:System.ServiceModel.Activation.TcpWorkerProcess / 62875109例外:System.TimeoutException: http ://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymousに送信されたこの要求操作は 、構成されたタイムアウト(00:01:00)。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。これは、サービスがまだ操作を処理しているためか、サービスが応答メッセージを送信できなかったためである可能性があります。(チャネル/プロキシをIContextChannelにキャストし、OperationTimeoutプロパティを設定することにより)操作タイムアウトを増やすことを検討し、サービスがクライアントに接続できることを確認してください。
サーバースタックトレース:System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)at System.ServiceModel.Channels.ServiceChannel.EndCall(String action、Object [] outs、IAsyncResult result)at System.ServiceModel.Channels.ServiceChannelProxy.InvokeEndService(IMethodCallMessage methodCall、ProxyOperationRuntime operation)at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)[0]で再スローされた例外:System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult result)
at System.ServiceModel.Activation.WorkerProcess.EndDispatchSession(IAsyncResult result)プロセス名:SMSvcHostプロセスID:1532
この問題を解決するのに役立つヒントや構成のコツはありますか?
高負荷のシナリオに最適な構成は何ですか?