19

IIS6.0でWCFサービスをホストしているサーバーの1つで次の動作が観察されました。

  1. IISログには、所要時間の値が高いことが示されています(> 100000)
  2. HTTPステータスコードは200です
  3. sc-win32-ステータスコードは64の値を示しています

sc-win32-ステータスコード64は、「指定されたネットワークはもう利用できません」を示していることがわかりました。

最初は、MinFileBytesPerSecondに設定された制限が原因である可能性があると考えました。これは、HTTP.sysがクライアントからサーバーにデータを送信し、サーバーからクライアントにデータを送信するときに適用する最小スループットレートを設定します。ただし、sc-bytesとcs-bytesの値は、送信されるデータの量がサービスで一般的に観察される範囲内であることを示しています。

また、WCFサービスは4つのボックスでホストされ、負荷分散されていますが、問題が発生するのは1つのサーバーのみであることに注意してください。(ただし、基本的に同じサーバー上ではありません)。問題も断続的です。

他の誰かがこのエラーに遭遇しましたか?何が間違っている可能性があるかについての手がかりはありますか?

更新

注:IIS 7.5での観察(IISバージョンは実際には重要ではありません)問題

を再現することができました。この問題は、次

の場合に発生します。1.WCFサービスが応答するのに長い時間がかかる
2.サーバーから応答を受信する前にクライアントプロキシがタイムアウトする。この場合、クライアントでTimeoutExceptionが発生します。
3.サーバーは、クライアントのTCP ACKを待機し続けますが、これは決して受信されません。

したがって、長いタイムアウト(TCPソケットタイムアウト(デフォルト値:4分)およびsc-win32-ステータス64)

つまり、基本的に、WCFコードの応答に時間がかかり、クライアントがタイムアウトしているように見えます。IISログで確認したのは単なる症状であり、問​​題ではありません。

4

3 に答える 3

1

説明している動作は、WCF サービスの最大セッション、呼び出し、またはインスタンスを超えた場合にも発生します (サービス インスタンス コンテキスト モードの構成方法によって異なります)。%max 同時セッションおよび/または %max 同時呼び出しの System.ServiceModel パフォーマンス カウンターを確認すると (サービスのインスタンス コンテキストによって異なります)、IIS ログ エントリとの相関関係が見られる場合があります。

これらの最大値は、サービスのスロットリング動作で構成できることに注意してください。

https://msdn.microsoft.com/en-us/library/vstudio/system.servicemodel.description.servicethrottlingbehavior(v=vs.100).aspx

于 2015-03-31T15:15:49.773 に答える
0

IIS はリソースを節約するためにサービスをスリープ状態にします。

ここからコピー ( WCF REST サービスは非アクティブ後にスリープ状態になります)

サービスをホストするアプリケーション プールは、アイドル タイムアウト プロパティ (IIS 管理コンソールでのアプリケーション プールの詳細設定) を定義します。既定値は 20 分です。アイドル タイムアウト内にアプリ プールが要求を受信しない場合、プールにサービスを提供しているワーカー プロセスは終了します。新しい要求を受け取った後、IIS はプロセスを再度開始する必要があります。プロセスは、アプリケーション ドメインと関連するすべてのアセンブリを読み込み、.svc ファイルをコンパイルし、サービス ホストを実行して、要求を処理する必要があります。このタイムアウトは、サーバー リソースの正しい処理です。プロセスが必要ない場合は、停止する必要があります。別の厄介な回避策は、ping プロセス (サーバー上の cron ジョブやスケジュールされたタスクなど) を使用することです。これは、同じアプリケーション内のサービスまたはページのメソッドに対して定期的に ping を実行します。

于 2013-06-15T10:41:11.037 に答える
0

あなたの質問をもう一度見て、これに対する解決策を見つけたことを指摘したいと思いました。web.config の次のコードであることが判明しました。

     <pages smartNavigation="true">

これをオフにすると、同じタイムアウト エラーが発生しなくなりました。こちらの回答もご覧ください

于 2013-09-12T19:37:30.563 に答える