0

接続されているクライアントに毎秒複数のコールバックを送信するサービスがあります。サービスがメッセージを送信するときに、クライアントが数秒以上後にメッセージを受信するのはなぜですか?

構成の詳細は次のとおりです。

        <bindings>
                  <wsDualHttpBinding>
                    <binding name="WSDualHttpBinding_IMyService" receiveTimeout="00:30:00" 
    sendTimeout="00:30:00" useDefaultWebProxy="false" maxBufferPoolSize="2147483647" 
maxReceivedMessageSize="2147483647">

                      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
        maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                      <security mode="None"/>
                    </binding>
                  </wsDualHttpBinding>
                </bindings>
                <behaviors>
                  <serviceBehaviors>
                    <behavior name="Service1Behavior">
                      <serviceMetadata httpGetEnabled="True"/>
                      <serviceDebug includeExceptionDetailInFaults="True"/>
                      <serviceThrottling maxConcurrentCalls="10"
                                maxConcurrentInstances="10"
                                maxConcurrentSessions="5" />
                    </behavior>
                  </serviceBehaviors>
                </behaviors>
4

2 に答える 2

1

あなたが説明することは、スレッドの作成時間に関連している可能性があります。
ここを参照してください: WCF サービスは、負荷がかかるとゆっくりとスケールアップする場合があります

「実行時間と受信したリクエストの数に応じて、プロセスがリクエストにサービスを提供したり、着信負荷を維持したりするのに十分な IOCP スレッドを作成するまで、受信したリクエストごとに WCF の実行時間が約 500 ミリ秒直線的に増加することに気付く場合があります。」

回避策は記事に記載されています。

于 2012-08-17T15:15:57.987 に答える
0

私は同じ問題を扱っており、問題に対処するためにこれらのリンクを調べています。

概要では、DoSの脆弱性を防ぐために、すぐに使用できるWCFは「ロックダウン」されているようです。基本的に、以下のリンクで説明されているように、サービスのスロットルを解除する必要があります。

http://theburningmonk.com/2010/05/wcf-improve-performance-with-greater-concurrency/

http://blogs.msdn.com/b/wenlong/archive/2010/02/11/why-are-wcf-responses-slow-and-setminthreads-does-not-work.aspx

http://weblogs.asp.net/sweinstein/archive/2009/01/03/creating-high-performance-wcf-services.aspx

于 2012-11-09T20:11:30.623 に答える