Я делаю некоторые стресс-тесты для саги, которая использует 2 таймаута. Во время теста создается около 21 тыс. Саг. Таким образом, это означало бы тайм-ауты 42K, но я замечаю, что тайм-аут очереди диспетчера саги наводнен 100-тысячными сообщениями до тех пор, пока не произойдет сбой, потому что предел памяти MSMQ поражен.Очередь NServiceBus Timeoutsdispatcher заливается сообщениями во время стресс-тестов
Я наблюдаю это поведение, так как я переключил механизм персистентности с RavenDB на SQL Server.
Есть ли у кого-нибудь идеи, что может быть неправильным?
Транспорт: MSMQ
послесвечения: NHibernate пакеты, используемые: настройки
NHibernate version 4.0.4.4000
NServiceBus version 5.2.14
NServiceBus.Host version 6.0.0
NServiceBus.Log4Net version 1.0.0
NServiceBus.NHibernate version 6.2.7
Тест:
* конечная точка 1 посылает 22000 сообщений конечной точке 2.
* точка 2 хостов сага, которая началась этим сообщением.
* каждая сага публикует событие, а затем запрашивает 2 тайм-аута: 1 через 4 минуты, 1 на 10 минут.
Наблюдаемое поведение:
* Конечная точка 1 отправляет 22 тыс. Сообщений менее чем за минуту.
* Конечная точка 2 (сага) обрабатывает от 5 до 10 сообщений в секунду.
* через 4 минуты запускаются первые таймауты, а конечная точка 2 все еще обрабатывает сообщения из своей очереди и тем самым создает новые экземпляры саги.
* с этого момента очередь тайм-аутов в очереди конечных точек саги заполняется сообщениями.
* после 10 минут или около того тайм-аутдискаторная очередь уже содержит более 170 тыс. Сообщений и по-прежнему заполняется.
* Это продолжается до тех пор, пока не закончится оконечная нагрузка 2, так как предел памяти MSMQ будет удален, или все сообщения из входной очереди будут обработаны. Если последнее встречается первым, счетчик сообщений очереди тайм-аутов начинает уменьшаться до тех пор, пока он не достигнет 0.
Да, я делаю стресс-тест на той же машине, что и раньше, с RavenDb: мой локальный ноутбук со встроенным SSD. В самой обработке сообщений нет ничего плохого. Конечная точка саги работает нормально, обрабатывая от 5 до 10 сообщений в секунду. Я просто вижу, что очередь тайм-аутов в моей саге заливается сообщениями, в момент первого из двух тайм-аутов моего пожара, созданного моей сагой. –
Я добавил описание моей тестовой установки и наблюдений. –
Я обновил свой ответ, возможно, это помогает. –