Экспорт (0) Печать
Развернуть все

Вопросы производительности

Все объекты сообщений Шина обслуживания для Windows Server (очереди, разделы, подписки) хранятся в контейнерах. Каждый контейнер связан с одиночной БД, где физически хранится объект и все его сообщения. БД может обслуживать только один контейнер. При создании нового контейнера также создается новая БД. При создании раздела или очереди Шина обслуживания для Windows Server помещает этот объект в контейнер. Все сообщения хранятся в базе данных этого контейнера. Все подписки на раздел хранятся в том же контейнере.

Ферма Шина обслуживания для Windows Server может состоять из одного или трех узлов. На каждом узле работает служба шлюза Шина обслуживания для Windows Server и служба брокера Шина обслуживания для Windows Server. Каждый контейнер загружается одним из брокеров. Шина обслуживания для Windows Server пытается распределять контейнеры равномерно между всеми доступными брокерами. При сбое брокера все загруженные им контейнеры передаются другим брокерам. Все операции с конкретным объектом обрабатываются тем брокером, который загрузил контейнер с объектом. Дополнительные сведения см. в разделе Шина обслуживания для Windows Server Общие сведения об архитектуре.

Рекомендации по обеспечению производительности

В этом разделе описываются методы оптимизации производительности и повышения пропускной способности.

Вопросы оборудования

Общая пропускная способность фермы Шина обслуживания для Windows Server определяется тремя факторами.

  1. Вычислительной мощностью узлов фермы.

  2. Вычислительной мощностью и конфигурацией жестких дисков машин SQL Server.

  3. Пропускной способностью сети между узлами фермы и машинами SQL Server.

TipСовет
Для повышения пропускной способности используйте для БД SQL Server выделенную машину, а не узел фермы.

Если число очередей и разделов будет большим, следует предусмотреть несколько контейнеров сообщений, которые будут работать на нескольких SQL Server. Хотя Шина обслуживания для Windows Server динамически распределяет контейнеры сообщений (базы данных) между узлами фермы, размещение очередей и разделов Шина обслуживания для Windows Server (а также сообщений в них) по базам данных производится при создании этих объектов.

TipСовет
Для оптимальной производительности число контейнеров не должно быть меньше числа узлов фермы.

TipСовет
При большом количестве очередей и разделов число контейнеров должно в три раза превышать число узлов фермы.

TipСовет
Создайте контейнеры сообщений до создания очередей и разделов Шина обслуживания для Windows Server.

Оптимизация SQL Server

Производительность обмена сообщениями зависит от скорости ввода-вывода на сервере SQL Server. Учтите следующие факторы при настройке SQL Server, где размещаются БД контейнеров Шина обслуживания для Windows Server.

  • Настройте SQL Server так, чтобы данные и журналы хранились на разных дисках.

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

  • Заранее отведите место для файлов журналов и данных, а также отключите автоматическое увеличение.

  • Настройте SQL Server так, чтобы на каждое ядро процессора приходилось по одному файлу данных TempDB.

  • Измените размер единицы выделения NTFS на 64 КБ.

Включение перенаправления

По умолчанию клиент отправляет запрос одному из шлюзов Шина обслуживания для Windows Server. Тот переадресует запрос брокеру, который загрузил контейнер с соответствующим объектом. Если перенаправление включено, клиент отправляет шлюзу Шина обслуживания для Windows Server запрос перенаправления. Шлюз возвращает ему адрес брокера. Затем клиент отправляет все запросы напрямую брокеру. Чтобы включить перенаправление, задайте для свойства EnableRedirect фабрики значение true. Например:

MessagingFactorySettings factorySettings = new MessagingFactorySettings();
factorySettings.NetMessagingTransportSettings.EnableRedirect = true;
MessagingFactory factory = MessagingFactory.Create("address", factorySettings);

Обратите внимание, что перенаправление доступно только для запросов по TCP. Запросы по HTTP всегда идут через шлюз. Также учтите, что перенаправление не поддерживается некоторыми балансировщиками нагрузки.

Увеличьте размер внутреннего кэша

Увеличение размера кэша позволяет процессам брокеров Шина обслуживания для Windows Server хранить больше данных в памяти. Например, чтобы увеличить размер кэша по умолчанию с 500 МБ до 1 ГБ, запустите следующие командлеты PowerShell на узлах фермы Шина обслуживания для Windows Server:

Set-SBRuntimeSetting  -Name messagecachesizeperentity -Value 1048576000
Stop-SBFarm
Start-SBFarm

Выключение упорядочения сообщений

Сообщения, отправляемые в раздел, должны попадать во все подписки. Этот процесс можно ускорить, разрешив Шина обслуживания для Windows Server перемещать сообщения в подписки не по порядку. В этом случае можно добиться утроения производительности.

Чтобы выключить упорядочение сообщений в разделе, задайте для свойства SupportOrdering класса TopicDescription значение false. Например:

TopicDescription topicDescription = new TopicDescription(topicName)
{
    SupportOrdering = False
};
namespaceManager.CreateTopic(topicDescription);

Сценарии

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

Оптимизация для малого числа объектов с большой пропускной способностью

Очередь или раздел находится в одном контейнере, который хранится в одной БД и обрабатывается одним брокером. Если используется протокол TCP , активен только один узел фермы. Все прочие служат резервными на случай восстановления фермы при сбое основного узла. Get-WFServiceVersion и Add-SBHost

Тесты показали следующие результаты:

 

  Скорость сообщений Число операций (отправка и получение)

Одна очередь

20 000 сообщений в секунду

40 000 сообщений в секунду

Один раздел с 1 подпиской

14 200 сообщений в секунду

28 400 сообщений в секунду

Один раздел с 1000 подписок

26 сообщений в секунду

26000 сообщений в секунду

Тесты проводились в трехузловой фермой с выделенным узлом SQL Server. Измерялись параллельные операции отправки и получения сообщений размером в 1 КБ. Все узлы были оснащены четырьмя четырехядерными ЦП (2,3 ГГц), 24 ГБ ОЗУ и 1-гигабитным соединением Ethernet.

Оптимизация для большого числа объектов с большой пропускной способностью

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

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

См. также


Дата сборки:

2013-07-25

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2015 Microsoft