NServiceBus: Как не допустить, чтобы дистрибьютор выступал в качестве узкого места в обработке (снижает скорость на 65%) - PullRequest
0 голосов
/ 24 октября 2011

У нас есть система обработки событий, которая будет обрабатывать события, отправленные непосредственно из источника в процесс обработчика, со скоростью 200 eps (событий в секунду).Очереди и отправка сообщений являются транзакционными.Добавление распределителя NSB между генератором событий и процессом-обработчиком снижает эту скорость с 200 до 70 eps.Использование диска и ЦП на распределительной коробке также значительно увеличилось.

Видно с коммерческой сборкой NServiceBus, версия 2.6.0.1505.

Кто-нибудь еще видел такое поведение или есть какой-нибудь совет?

1 Ответ

0 голосов
/ 25 октября 2011

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

Предполагая, что вы работаете с БД, вы можете использовать свои базы данных для работы с различными наборами данных. Вы также можете переместить DB (s) ближе к рабочим (к той же машине).

Я бы также проверил настройки вашего провайдера БД и MSMQ, так как есть несколько вещей, которые можно настроить с точки зрения тайм-аутов и тому подобного. Обратите внимание, что при применении определенных настроек есть компромисс, но, похоже, вы бы предпочли самую быструю пропускную способность.

Есть много других вещей системного уровня, которые нужно проверить, я предполагаю, что вы прошли через все эти элементы (сеть / диск / RAM / и т. Д.).

...