WCF высокое количество экземпляра: кто-либо знает отрицательный sideffects?

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

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

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

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

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

Спасибо, Alex

5
задан Alex 18 June 2010 в 18:24
поделиться

1 ответ

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

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

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

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

Часть этого я рассматриваю в своей статье ESB через WCF / Trottling Здесь

UPDATE:

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

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

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

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

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

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

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

3
ответ дан 15 December 2019 в 06:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: