Почему WCF ограничивает одновременные подключения к 5?

У меня есть служба WCF (basicHttpBinding), размещенная на II7 в Vista, и я ожидаю, что вы будете обрабатывать множество запросов одновременно. Я пытаюсь загрузить тестовый сервис, разбирая 200 потоков в тестовом приложении и вызывая службу WCF. Я запустил это тестовое приложение на том же компьютере, что и сервер, а также несколько других компьютеров, и я всегда получаю тот же результат - не более 5 работников. Является ли это узким местом WCF, HTTP или IIS?

Ответы

Ответ 1

Это функция предотвращения атак типа "отказ в обслуживании". WCF предназначен для обеспечения безопасности. Проверьте поведение службы, посмотрите в msdn для конфигурации maxConcurrentCalls и maxConcurrentSessions. Я думаю, что предел равен 10, но я мог ошибаться.

Ответ 2

Вот хорошая статья об управлении экземплярами WCF из журнала MSDN от Juval Lowy: http://msdn.microsoft.com/en-us/magazine/cc163590.aspx Проблема с июня 2006 года (в случае, если MSDN снова уничтожит ссылки).

В нем описываются методы и настройки для управления жизненным циклом службы (одним из них является дросселирование) и показывает, какие параметры применяются для увеличения количества параллельных соединений.

Ответ 3

WCF по умолчанию защищен. Это означает, что настройки по умолчанию ограничивают то, что вы можете сделать со своей службой WCF, чтобы избежать подобных атак типа "отказ в обслуживании". Это отлично подходит для интернет-сервисов, но иногда это может укусить вас. В зависимости от того, какие привязки и поведение вы используете, это может быть установка в любом из них.

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

Ответ 4

Нет, это только настройки дросселирования по умолчанию в WCF. Он настроен в элементе serviceThrottling поведения в файле конфигурации службы, который имеет атрибут maxConcurrentSessions. По умолчанию 5, но вы можете установить его в нужное вам положение.