У нас довольно большая настройка среды MSMQ, которую сегодня решили остановить.
(Все это виртуальная машина под vSphere 4.0 Update 1)
Есть 8 веб-серверов, которые получают данные от клиентов в сети. На всех этих машинах установлен MSMQ, и они просто отправляют сообщение MSMQ на основной сервер MSMQ. В настоящее время сообщения накапливаются в исходящей очереди. Эти машины - Windows 2008 Web Edition с 2 гигабайтами оперативной памяти и 2 виртуальными ЦП.
У нас есть кластерный сервер MSMQ (Windows Cluster Server), который получает сообщения от 8 веб-серверов. Нет ограничений на количество данных, которые могут быть в очередях. Жесткий диск составляет 50 Гигабайт, и есть 46 Гигабайт свободного места. Эти машины - Windows 2008 Enterprise Edition с 8 ГБ оперативной памяти и 4 виртуальными ЦП. Раньше в кластере было 2 виртуальных ЦП, но загрузка ЦП достигала 100%, поэтому я увеличил оба узла кластера Windows до 4 виртуальных ЦП.
Есть 4 сервера приложений, которые читают сообщения из очередей и обрабатывают их.
Обычно это все работает отлично, но не сегодня.
Сегодня утром все идет очень медленно. 8 веб-серверов в настоящее время показывают до 300 тыс. Сообщений, находящихся в исходящих очередях. Кластерный сервер в настоящее время показывает более миллиона сообщений в очередях (некоторые из них имеют размер до 200 КБ).
Если я посмотрю на perfmon на 8 веб-серверах, это показывает, что в среднем я отправляю 2 сообщения в секунду. Если я смотрю на perfmon в кластере, то он показывает, что ~ 7 сообщений в секунду поступают в кластер.
Машины, которые выполняют чтение, не получают много сообщений каждый. Самые быстрые сервисы получают 10-12 сообщений в секунду, самые медленные показывают 0 или 1.
Единственное изменение, произошедшее недавно, - это то, что мы изменили количество интерфейсных веб-серверов с 4 до 8. Мы сделали это около 2 недель назад без проблем. Во вторник мы отключили их, чтобы посмотреть, как остальные 4 справятся с нагрузкой. В среду мы снова включили четыре новые машины.
Диск на кластере показывает очень низкий ввод-вывод и отсутствие очередей.
Чтобы быть в безопасности, я обновил PowerPath до последней версии, но это не помогло никому.
8 веб-серверов находятся в одной виртуальной локальной сети, а серверы Cluster и серверы приложений - во второй виртуальной локальной сети. Между виртуальными локальными сетями нет брандмауэров.
И нет ничего полезного в журналах приложений или системы на любой из машин.
источник
Ответы:
Всякий раз, когда кто-то говорит, что у него более миллиона сообщений, срабатывает сигнализация! Для сообщений требуется управление памятью ядра (выгружаемого пула). Если у вас такое большое количество сообщений, возможно, вы исчерпываете то, что доступно на кластерном сервере. Оптимальное число сообщений в очереди равно нулю - в основном убедитесь, что вы можете обрабатывать сообщения быстрее, чем они могут поступить.
Я бы порекомендовал закрыть веб-серверы и полностью обработать журнал невыполненных работ, прежде чем снова подключить их к сети.
Ссылочный пункт 4 этого сообщения в блоге: http://blogs.msdn.com/johnbreakwell/archive/2006/09/18/insufficient-resources-run-away-run-away.aspx
Приветствия Джона Бруквелла (MSFT)
источник
Я спросил одного из наших системных администраторов, и он сказал, что наша волшебная точка в том, чтобы 4 веб-сервера максимально загружали MSMQ-бокс на виртуальных машинах, а затем они перешли к аппаратному блоку для решения. Также попробуйте захват пакета, чтобы увидеть, что происходит. Много ли в аутентификации собирается и AD тоже? Учитывая, насколько болтливым является MSMQ, вам нужно ограничить сетевые пути и, возможно, путь аутентификации.
HTH, Чак.
источник
Ссылаясь на ваш комментарий об отсутствии удаленного администрирования, да, это не очень хорошая история с MSMQ и счетчиками производительности. Для тех, кто следит за веткой и хочет знать, какие комбинации ОС работают, загляните в блог Motley Queue:
Счетчики производительности MSMQ 4.0 и раздел реестра NetNameForPerfCounters http://blogs.msdn.com/motleyqueue/archive/2007/12/14/msmq-4-0-performance-counters-and-the-netnameforperfcounters-registry-key.aspx
Приветствия Джона Бруквелла (MSFT)
источник