Служба WCF не может быть открыта - слишком много клиентских вызовов
У меня есть веб-служба WCF, размещенная в службе Windows.
Сервис настраивается с использованием следующих атрибутов (VB)
<ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Multiple,
InstanceContextMode:=InstanceContextMode.PerCall,
UseSynchronizationContext:=False)>
Я создал тестовый клиент, который создает 50 потоков сразу, и я запускаю их сразу же, все запрашивая операцию на службе WCF. Первые 30 или около того открытий (клиент.open ()) работает, но после этого я получаю сообщение об ошибке на моем клиенте, что открытие не может быть сделано, потому что был тайм-аут при попытке открыть сервис и таким образом я получаю EndPointNotFoundException. (Операции, которые я вызываю, все синхронны, если это имеет значение.)
Могу ли я ожидать такого поведения и, следовательно, просто жить с этими исключениями или я должен посмотреть на некоторые из моих настроек, либо выше, либо любые другие настройки? (Я использую NetTcpBinding.)
Я вижу, что клиент работает по запросу сразу же созданных потоков одновременно, поэтому вышеуказанные настройки имеют желаемый эффект создания сервис многопользовательский-в-то-же-время-включен.
Но в идеале я не получал бы исключений таймаута. Скорее я хотел бы, чтобы клиенты ждали дольше, чтобы получить свой ответ, чем тайм-аут.
Есть идеи?
Спасибо всем!
1 ответ:
Проверьте следующие настройки:
<behavior name="CommonServices_Behavior"> <serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="50" maxConcurrentInstances="50" /> </behavior>
Я, кажется, припоминаю, что некоторые из этих значений имеют значения по умолчанию, установленные в вашей машине.конфигурационный файл. Существует также значение MaxConnections для проверки NetTcpBinding .