ChannelFactory Максимальный пул соединений - PullRequest
5 голосов
/ 20 декабря 2011

Я создаю инструмент для тестирования нагрузки на сервер. Я создаю много разных потоков, которые отправляют отдельные запросы на сервер. Кажется, он ограничен ChannelFactory . Это узкие места при фактическом вызове службы, например:

_proxy.MyServiceCall(...);

Я пробовал несколько разных подходов:

  • Использование одного статического ChannelFactory, совместно используемого всеми потоками
  • Создание новой фабрики каналов для потока
  • Создание новой фабрики каналов для каждого звонка

Все это приводит к довольно схожим характеристикам. Похоже, существует глобальный статический пул доступных соединений, которые использует фабрика каналов. Я пытался найти это, но ничего не смог найти. Ты бы знал об этом больше? Как вы думаете, мое предположение, что есть статический пул соединений, является правильным? Если да, то знаете ли вы, как это будет настраиваться?

Это текущая конфигурация для приложения тестирования:

<configuration>
  <system.serviceModel>
    <client>
      <endpoint binding="wsHttpBinding" bindingConfiguration="SynchronizationServiceBinding" contract="My.Namespace.ISynchronizationService" name="ClientBinding">
      </endpoint>
    </client>
    <bindings>
      <wsHttpBinding>
        <binding name="SynchronizationServiceBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="10485760">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
          <reliableSession enabled="false"/>
          <readerQuotas maxArrayLength="1000000"/>
        </binding>
      </wsHttpBinding>
    </bindings>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>    </configuration>

1 Ответ

4 голосов
/ 21 декабря 2011

Оказалось, что все, что мне нужно было сделать, это добавить конфигурацию для соединения system.net. Управление:

  <system.net>
    <connectionManagement>
       <add address = "*" maxconnection = "1000" />
    </connectionManagement>
  </system.net>

См .: Элемент (Настройки сети)

Обратите внимание, что проблема в этой теме та же, с которой я столкнулся: IIS / WAS обрабатывает только два запроса на клиента параллельно

...