none
wcfをIISでホストさせると最初の接続に異常に時間がかかる RRS feed

  • 質問

  • wcf で作成した処理をIISでホストさせて使用することを検討していますが、

    テスト的に作成したプログラムが異常に遅いため、何か設定が悪いのだと思います。

     

    現在以下のような状況で困っていますので、アドバイス願います。

     

    1.wcf側の処理

      マシン名を返す処理を実装。(WcfService.GetData)

     

    2.環境

      サーバ:Windows2003

      クライアント:Windows2003(サーバと同一マシン)

      IIS:6.0(サーバ上のIIS)

      Visual Studio 2008 Pro

     

    3.状況

      「WcfService.GetData」を呼び出すクライアントを作成し実行すると、一度目の呼び出しに

      かなり時間がかかる。(30秒程度)

     

      クライアントを終了せずに、再度「WcfService.GetData」を呼び出すと、1秒以内で結果を

      受け取ることができる。

     

      クライアントを終了後、再度そのクライアントを起動して実行すると、一度目は30秒程度かかる。

     

    4.補足

      IIS でホストするとこんなものかと思い、ASP.NET Webサービスで同一結果を返す処理を

      作成して、IIS上へ展開すると、一度目から数秒でレスポンスが返ってくる。

     

    2008年4月3日 5:32

回答

  • WCF側が返すマシン名はどのマシン名でしょうか(自分自身?)。

    30秒というと何かタイムアウト的なものが発生したあとに値を返している(クライアント側を再起動しないときはキャッシュとかが効いてる?)ようにも見受けられるのですが、そのあたりに影響しそうな情報はありますでしょうか。

    例えば、DNSで名前解決しているとか、WCF側の処理のどこで時間が掛かっているのか、それともWCF側の処理が呼び出されるまでが時間が掛かっているかとか。

     

    2008年4月3日 9:15

すべての返信

  • WCF側が返すマシン名はどのマシン名でしょうか(自分自身?)。

    30秒というと何かタイムアウト的なものが発生したあとに値を返している(クライアント側を再起動しないときはキャッシュとかが効いてる?)ようにも見受けられるのですが、そのあたりに影響しそうな情報はありますでしょうか。

    例えば、DNSで名前解決しているとか、WCF側の処理のどこで時間が掛かっているのか、それともWCF側の処理が呼び出されるまでが時間が掛かっているかとか。

     

    2008年4月3日 9:15
  • 回答ありがとうございます。

     

    呼び出し側の「app.config」の設定を変更することで、解決しましたので、報告します。

     

    以下の、「useDefaultWebProxy」設定を、「true」から「false」に変更することで、

    最初から1秒以内で返ってくるようになりました。

     

    Code Snippet

    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="WSHttpBinding_ILogin" closeTimeout="00:01:00"
                        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                        bypassProxyOnLocal="false" transactionFlow="false"

                        hostNameComparisonMode="StrongWildcard"
                        maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                        allowCookies="false">

     

     

     

    2008年4月4日 4:47