1

Webファーム(Webサイト用)およびNLB負荷分散(サービス用)用にWCF Service [NetTcp](両方ともc#)を使用してASP.NETWebサイトプロジェクトを構成したいと思います。同じように以下のオプションを設定したいと思います。

NetTcpBinding.maxConcurrentCalls、NetTcpBinding.ListenBacklog、およびNetTcpBinding.MaxConnections

注:単一マシンの構成中に、WCFサービスプロジェクトのNetTcpBinding.ListenBacklogおよびNetTcpBinding.MaxConnectionsの値をデフォルト値である10を超える値に変更したとき。例外が発生しました。Webサイトでこの値を変更したとき、正常に機能していました。このため、デフォルトの構成を維持する必要がありました。なぜそうなのかわからない。誰かがこれを説明できればそれは役に立ちます。

次のリファレンスは、特定の環境で構成する方法を示していますが、その方法については説明していません。

参照:http://msdn.microsoft.com/en-us/library/ee377061%28BTS.10%29.aspx

アップデート:

少し簡単にしましょう。次の構成があるとしましょう。

  • Webファーム内の2つのIISサーバー。
  • NLB内の3つのWCFサービスサーバー(NetTcp)
  • デフォルトの構成。シングルインスタンスの場合。
    • NetTcpBinding.ListenBacklog:10
    • NetTcpBinding.MaxConnections:10
    • NetTcpBinding.maxConcurrentCalls:16

これで、この環境での構成設定はどうなりますか。上記と同じですか、それとも次のようになりますか。

  • 推奨される構成。単一のWebFarm/NLBの場合
    • NetTcpBinding.ListenBacklog:30(10 * 3)
    • NetTcpBinding.MaxConnections:30(10 * 3)
    • NetTcpBinding.maxConcurrentCalls:48(16 * 3)
4

1 に答える 1

0

Windows NLBを使用してnet.tcpの負荷を分散するには、MSDNで提案されている30秒の値でleaseTimeoutを短くする必要があります。必ず通話ごとのサービスを使用してください。パフォーマンスが向上するため、ポート範囲ではなく、各エンドポイント(複数のエンドポイントがある場合)の個々のポートのバランスをとるようにNLBを構成します。アフィニティがオフになっていることを確認してください。
以下に示すように、私はうまく機能したカスタムバインディングを使用しています

<customBinding>

        <binding name="netTcpBindingConfiguration_custom"
                 closeTimeout="00:01:00"
                 openTimeout="00:01:00"
                 receiveTimeout="00:10:00"
                 sendTimeout="00:01:00" >
          <transactionFlow/>
          <windowsStreamSecurity/>
          <binaryMessageEncoding/>

          <tcpTransport maxBufferPoolSize="524288"
                        maxReceivedMessageSize="5000000"
                        connectionBufferSize="8192"
                        manualAddressing="false"
                        hostNameComparisonMode="StrongWildcard"
                        channelInitializationTimeout="00:00:05"
                        maxBufferSize="5000000"
                        maxPendingConnections="20"
                        maxOutputDelay="00:00:00.2000000"
                        maxPendingAccepts="5"
                        transferMode="Buffered"
                        listenBacklog="20"
                        portSharingEnabled="false"
                        teredoEnabled="false">
            <connectionPoolSettings groupName="default"
                                    leaseTimeout="00:00:30"
                                    idleTimeout="00:02:00"
                                    maxOutboundConnectionsPerEndpoint="100"/>
          </tcpTransport>
        </binding>
</customBinding>
于 2010-10-21T10:50:10.017 に答える