2010-10-21 5 views
1

Я хочу настроить проект веб-сайта ASP.NET с помощью службы WCF [NetTcp] (как в C#) для веб-фермы (для веб-сайта), так и для балансировки нагрузки NLB (для обслуживания). Я хотел бы настроить следующие параметры для этого.Конфигурация службы WCF в среде веб-фермы и балансировки нагрузки

NetTcpBinding.maxConcurrentCalls, NetTcpBinding.ListenBacklog и NetTcpBinding.MaxConnections

Примечание: Во время одной конфигурации машины, когда я изменил значение NetTcpBinding.ListenBacklog и NetTcpBinding.MaxConnections в проекте службы WCF более, что 10, что значение по умолчанию , У меня есть исключение. Когда я изменил это значение на веб-сайте, он работал нормально. Из-за этого мне пришлось сохранять конфигурацию по умолчанию. Не знаю, почему это так. Если бы кто-нибудь мог это объяснить, это было бы полезно.

Следующая ссылка дает представление о том, как настроить в данной среде, но не говорит, как это сделать.

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

Обновление:

Позвольте мне упростить немного. Допустим, у меня есть следующая конфигурация.

  • 2 сервера IIS в веб-ферме.
  • 3 Сервисные серверы WCF (NetTcp) в NLB
  • Стандартная конфигурация. для одного экземпляра.
    • NetTcpBinding.ListenBacklog: 10
    • NetTcpBinding.MaxConnections: 10
    • NetTcpBinding.maxConcurrentCalls: 16

что теперь будет моя установка конфигурации в этой среде. Будет ли он таким же, как указано выше, или будет следующим.

  • Рекомендуемая конфигурация. для одного WebFarm/ЗСЛ
    • NetTcpBinding.ListenBacklog: 30 (10 * 3)
    • NetTcpBinding.MaxConnections: 30 (10 * 3)
    • NetTcpBinding.maxConcurrentCalls: 48 (16 * 3)

ответ

0

Для балансировки нагрузки net.tcp с использованием Windows NLB у вас должно быть более короткое время арендыTimeout со значением 30 секунд, которое предлагается в MSDN. Убедитесь, что вы используете услуги для каждого звонка. Настройте 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> 
+0

Благодаря попробуют эти параметры, и пусть вы знаете. Не могли бы вы рассказать об исключении, которое я получал при изменении значений NetTcpBinding.ListenBacklog и NetTcpBinding.MaxConnections в настройке WCF. – BigBoss

Смежные вопросы