この記事は、Windows Communication Foundation サービスが net.tcp ライセンス認証を使用するときに発生するエラーを解決するのに役立ちます。
元の製品バージョン: .NET Framework、Windows Communication Foundation
元の KB 番号: 2026177
現象
Microsoft .NET Framework の次のシナリオについて考えてみましょう。
net.tcp ライセンス認証を使用して Windows Communication Foundation (WCF) サービスを実行します。
サービスがクライアント アプリケーションからの要求を処理するのに 1 分以上かかる場合は、次のエラーがログに記録されます。
ログ名: システム
ソース: SMSvcHost 3.0.0.0
日付:
イベント ID: 8
タスク カテゴリ: 共有サービス
レベル: エラー
キーワード: クラシック ユーザー: LOCAL SERVICE Computer: Description: An error occurred while dispatching a duplicated socket: now is now leaked in the process. ID: 2620 ソース: System.ServiceModel.Activation.TcpWorkerProcess/33156464 例外: System.TimeoutException: 送信されたこの要求操作は、構成されたタイムアウト (00:01:00) 内に応答を受信しませんでした。 この操作に割り当てられた時間は、より長いタイムアウト時間の一部であった可能性があります。 この原因としては、サービスがまだこの操作を処理していること、またはサービスが応答メッセージを送信できなかったことが考えられます。 (チャネル/プロキシを IContextChannel にキャストし、OperationTimeout プロパティを設定して) 操作タイムアウトを増やすことを検討し、サービスがクライアントに接続できることを確認してください。
原因
この問題は、Net.TCP ポート共有サービスのSmSvcHost.exe プロセスが 1 分後にタイムアウトしたために発生します。 内部タイムアウト値は 1 分です。 要求がサービスに送信されると、SmSvcHost.exe プロセスは、インターネット インフォメーション サービス (IIS) のW3wp.exe プロセスと通信するための新しいチャネルを登録するパイプ バインディングを作成します。 このプロセスでは、パイプ バインドを作成するのに 1 分かかります。 そのため、プロセスはタイムアウトになります。タイムアウトは、次のいずれかの条件に起因する可能性があります。
高い CPU: CPU は長時間にわたってほぼ完全な使用率です。 そのため、ターゲット サービスは要求を十分に高速に処理できません。
サービスの調整: サービスがサービス モデル内でスロットルに達しています。
サービスの初期化には 1 分以上かかります。
解決方法
高い CPU: CPU は長時間にわたってほぼ完全な使用率です。 そのため、ターゲット サービスは要求を十分に高速に処理できません。
解決策: コードを変更するか、CPU の状態が高くなるのを防ぐためにリソースを追加する必要があります。サービスの調整: サービスがサービス モデル内でスロットルに達しています。
解決策: ターゲット サービスの警告/エラー トレースを有効にして、この問題を特定します。 ソリューションに複数のセッションがアクティブな場合、または複数の同時呼び出しがある場合は、MaxConcurrentSessions
or MaxConcurrentCalls
を変更して負荷を軽減します。サービスの初期化には 1 分以上かかります。
解決策: トレースを監視して、サービス アプリケーションの初期化に 1 分以上かかるかどうかを確認します。 初期化ロジックを変更してこの時間を短縮できるかどうか、または最初のクライアント呼び出しの前に自動開始機能を使用してサービスを初期化できるかどうかを確認します。