Question

Je veux configurer ASP.NET site Web du projet à l'aide de service WCF [NetTcp] (tant en c #) pour le Web ferme (pour le site Web) et NLB équilibrage de charge (pour le service). Je voudrais configurer les options suivantes pour même.

NetTcpBinding.maxConcurrentCalls, NetTcpBinding.ListenBacklog et NetTcpBinding.MaxConnections

Remarque: Pendant seule configuration de la machine quand j'ai changé la valeur de NetTcpBinding.ListenBacklog et NetTcpBinding.MaxConnections dans le projet de service WCF plus que 10, ce qui est la valeur par défaut. Je suis une exception. Quand j'ai changé cette valeur en site web, il fonctionnait très bien. En raison de cela, je devais garder la configuration par défaut. Je ne sais pas pourquoi cela est le cas. Si quelqu'un pourrait expliquer cela, il serait utile.

Après référence donne idée comment configurer dans un environnement donné, mais ne dit pas comment s'y prendre.

Ref: http://msdn.microsoft. com / fr-fr / bibliothèque / ee377061% 28BTS.10% 29.aspx

Mise à jour:

Permettez-moi de simplifier un peu. Disons que je suit la configuration.

  • 2 serveurs IIS dans Web Farm.
  • 3 serveurs de service WCF (NetTcp) dans NLB
  • config par défaut. par exemple unique.
    • NetTcpBinding.ListenBacklog: 10
    • NetTcpBinding.MaxConnections: 10
    • NetTcpBinding.maxConcurrentCalls: 16

Maintenant, ce sera mon paramètre de configuration dans cet environnement. Sera-ce même que ci-dessus ou sera le suivant.

  • config proposée. pour seul Webfarm / NLB
    • NetTcpBinding.ListenBacklog: 30 (10 * 3)
    • NetTcpBinding.MaxConnections: 30 (10 * 3)
    • NetTcpBinding.maxConcurrentCalls: 48 (16 * 3)
Était-ce utile?

La solution

Pour l'équilibrage de charge net.tcp sous Windows NLB, vous devriez avoir une leaseTimeout plus courte avec une valeur de 30 secondes étant suggérée dans MSDN . Assurez-vous d'utiliser par les services d'appel. Configurer NLB pour équilibrer le port individuel pour chaque point final (si vous avez plusieurs points de terminaison) plutôt que la plage de ports que cette performance augmente. Assurez-vous que l'affinité est pas cochée.
J'utilise une liaison personnalisée qui m'a bien servi comme indiqué ci-dessous

<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top