Domanda

Voglio configurare ASP.NET sito web del progetto utilizzando WCF Servizio [NetTcp] (sia in C #) per il web-farm (per il sito web) e NLB Il bilanciamento del carico (per il servizio). Vorrei configurare le seguenti opzioni per la stessa.

NetTcpBinding.maxConcurrentCalls, NetTcpBinding.ListenBacklog e NetTcpBinding.MaxConnections

Nota: Durante la configurazione della macchina singola quando ho cambiato il valore di NetTcpBinding.ListenBacklog e NetTcpBinding.MaxConnections nel progetto WCF Service per più di 10, che è il valore predefinito. Ho eccezione. Quando ho cambiato questo valore nel sito web è andato tutto bene a lavorare. A causa di questo ho dovuto tenere in configurazione di default. Non capisco perché questo è il caso. Se qualcuno potrebbe spiegare questo sarebbe utile.

A seguito di riferimento dà idea di come configurare nel dato ambiente, ma non dice come andare su di esso.

Rif: http://msdn.microsoft. com / it-it / library / ee377061% 28BTS.10% 29.aspx

Aggiornamento:

Fammi semplificare un po '. Diciamo che ho seguente configurazione.

  • 2 server IIS in Web Farm.
  • 3 server WCF Service (NetTcp) in NLB
  • config predefinito. per singola istanza.
    • NetTcpBinding.ListenBacklog: 10
    • NetTcpBinding.MaxConnections: 10
    • NetTcpBinding.maxConcurrentCalls: 16

Ora, quale sarà la mia impostazione di configurazione in questo ambiente. Sarà come sopra o sarà il seguente.

  • config suggerita. per la singola WebFarm / NLB
    • NetTcpBinding.ListenBacklog: 30 (10 * 3)
    • NetTcpBinding.MaxConnections: 30 (10 * 3)
    • NetTcpBinding.maxConcurrentCalls: 48 (16 * 3)
È stato utile?

Soluzione

Per il bilanciamento del carico net.tcp utilizzando Windows NLB si dovrebbe avere un leaseTimeout più breve con un valore di 30 secondi viene suggerito in MSDN . Assicurarsi di utilizzare per servizi di chiamata. Configurare NLB per bilanciare singola porta per ogni endpoint (se si dispone di più punti finali), piuttosto che l'intervallo di porte come questa performance aumenta. Assicurarsi che l'affinità sia selezionata.
Io uso vincolante una consuetudine che mi ha servito bene come illustrato di seguito

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top