0

WCF サービスをローカルで実行する際に問題が発生しています。サービスをローカルで実行すると、クライアントでチャネルが開かれてから、WCF サービスのメソッドが呼び出されるまでに約 60 秒以上かかります。ステージング環境で実行されているサービスに接続すると、問題なく動作し、速度が低下することはありません。

  • VirtualBoxがホストするVM内で、Windowsサーバー2008を実行している新しいボックスでクライアントとサービスを実行しています。
  • VM で IPV6 が無効になっている
  • ホストファイルに localhost を指す参照があります
  • クライアントとホストの両方で詳細ログを記録し、クライアントでタイムアウトのために生成された例外のみを表示します。サービスにログオンすると、リクエストの開始から終了までの時間が長いだけで、エラーは表示されません。
  • Windowsファイアウォールをオフにしましたが、効果はありませんでした。
  • クライアントとサービスの構成ファイルはすべて、ステージング マシンと一致します。

私が働いている他の開発者には、この問題はありません。また、windows7を実行している別のボックス(VMではありません)でもこの問題は発生しません。ステージング サーバーもすべて VM (Server 2008) ですが、異なる VM プラットフォームで実行されます。

4

1 に答える 1

0

非常に小さなリクエストを送信して各レスポンスを待つ場合、これはNagle のアルゴリズムがあなたを攻撃しているように見えます。一時的に無効にしてテストします。

これがサービスへの最初の呼び出しではなく、最初の 10 回ほど呼び出した後にのみ発生する場合は、セッション リークである可能性があります。つまり、呼び出しごとに新しいサービス クライアントを作成し、それを閉じるのを忘れています。サーバーで使い果たされた後ServiceThrottlingBehavior.MaxConcurrentSessions、後続の各セッションは、前のセッションがタイムアウトするまで待機する必要があり、その後すぐに成功します。デフォルトの 60 秒から減らしてテストし、CloseTimeoutそれが表示内容を支配するタイムアウトであるかどうかを確認します。次に、もちろん、セッション リークを見つけて閉じ、実際の修正を行います。

どちらにも当てはまらない場合は、サービス トレースを構成し、その出力を使用して質問をより詳細に強化することができます。

于 2012-07-01T23:07:58.347 に答える