WCF большое количество экземпляров: кто-нибудь знает отрицательные побочные эффекты? - PullRequest
5 голосов
/ 18 июня 2010

Кто-нибудь испытывал или знал о негативных побочных эффектах от высокого количества экземпляров службы, таких как 60 КБ? Помимо потребления памяти, конечно.

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

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

Настройки регулирования будут:

  • maxConcurrentCalls = 100
  • maxConcurrentSessions = 60000
  • maxConcurrentInstances = 60000
  • InstanceContextMode = PerSession

Спасибо, Alex

1 Ответ

3 голосов
/ 18 июня 2010

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

Когда вы не применяете регулирование к вашим услугам, значения по умолчанию

•maxConcurrentCalls = 16
•maxConcurrentSessions = 10
•maxConcurrentInstances = Unlimited

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

Я расскажу об этом в своей статье о ESB через WCF / Trottling Здесь

UPDATE:

Спасибо за ваш ответ. За сеанс в порядке. Есть хорошая статья по оптимизации вашего WCFService Здесь

Они рекомендуют изменить ваши настройки на немного большее, чем 16 * количество процессоров. Поскольку вы используете для каждого сеанса, вы должны установить ваши ConcurrentCalls на 1-3% ваших параллельных экземпляров.

Допустим, у вас есть 8 ядер на вашем сервере. Я бы порекомендовал вам отправную точку ваших настроек для каждой сессии, например:

<serviceThrottling maxConcurrentCalls="6"
  maxConcurrentInstances="200"
  maxConcurrentSessions="200"/>

Это должно устранить ваши проблемы с клиентами, не закрывающими соединения, особенно если вы в настоящее время используете 10 сеансов по умолчанию. Ваш сервер должен иметь возможность обрабатывать гораздо больше, но 60k, вероятно, излишне. Вы можете проверить и увеличить по мере необходимости. Все зависит от мощности устройства и от того, для чего вы его еще используете.

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

Надеюсь, это поможет ... счастливое кодирование

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...