Служба WCF не может быть открыта - слишком много клиентских вызовов


У меня есть веб-служба WCF, размещенная в службе Windows.

Сервис настраивается с использованием следующих атрибутов (VB)

<ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Multiple,
InstanceContextMode:=InstanceContextMode.PerCall,
UseSynchronizationContext:=False)>

Я создал тестовый клиент, который создает 50 потоков сразу, и я запускаю их сразу же, все запрашивая операцию на службе WCF. Первые 30 или около того открытий (клиент.open ()) работает, но после этого я получаю сообщение об ошибке на моем клиенте, что открытие не может быть сделано, потому что был тайм-аут при попытке открыть сервис и таким образом я получаю EndPointNotFoundException. (Операции, которые я вызываю, все синхронны, если это имеет значение.)

Могу ли я ожидать такого поведения и, следовательно, просто жить с этими исключениями или я должен посмотреть на некоторые из моих настроек, либо выше, либо любые другие настройки? (Я использую NetTcpBinding.)

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

Но в идеале я не получал бы исключений таймаута. Скорее я хотел бы, чтобы клиенты ждали дольше, чтобы получить свой ответ, чем тайм-аут.

Есть идеи?

Спасибо всем!

1 2

1 ответ:

Проверьте следующие настройки:

<behavior name="CommonServices_Behavior">
  <serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="50"
   maxConcurrentInstances="50" />
</behavior>

Я, кажется, припоминаю, что некоторые из этих значений имеют значения по умолчанию, установленные в вашей машине.конфигурационный файл. Существует также значение MaxConnections для проверки NetTcpBinding .