RabbitMQ о проблемах производительности EC2

Каковы могут быть ожидания производительности RabbitMQ на EC2? Был бы признателен за обмен опытом здесь.

Я пытаюсь провести тест производительности RabbitMQ на aws EC2. У меня есть 3 отдельных экземпляра EC2, работающих для RabbitMQ, Publisher и consumer / worker.

Сценарий, который у меня есть, заключается в том, что Publisher подталкивает строку JSON (примерно 165-200 байт) для прямого обмена с постоянным значением true и связывает очередь с долговечным установлено значение true (т.е. оба в постоянном режиме). Потребитель / работник работает на отдельном ящике - продолжает тянуть сообщения. (Ожидается, что в дальнейшем эти сообщения в worker будут сохраняться в MongoDB, а Publisher будет заменен сервисом Restful с использованием REST easy)

Для простоты я смоделировал этот сценарий, используя образец кода Multicast. Я разделил многоадресный код на два отдельных файла java, а именно «Producer» и «Worker», чтобы запускать каждый в отдельном окне. Я использовал EC2 «c1.mediam» с 32-разрядным сервером Ubuntu v11.4 для запуска производителя и потребителя и «m1.large» с 64-разрядным сервером Ubuntu v11.4 для RabbitMQ.

Я могу достичь пропускной способности 3-5 тыс. Сообщений в секунду, т. Е. Сохранение скорости отправки сообщений исследования до 5 тыс. (Это согласуется с http://www.rabbitmq.com/faq.html#performance-latency )

Далее, когда я увеличиваю скорость отправки до 10-12k сообщений в секунду. Способность потребителя потреблять сообщения снижается до 1-2 тыс. Сообщений в секунду, и это приводит к возникновению невыполненной работы (часто она также опускается ниже 800 сообщений в секунду).

В приведенном выше сценарии у меня есть следующие вопросы, и я буду признателен за мысли / предложения по увеличению пропускной способности потребителя. (ПРИМЕЧАНИЕ: ожидается, что все сообщения в моем сценарии будут одного типа, что не дает возможности сгруппировать их для настройки маршрутизации, поэтому может потребоваться какой-то подход балансировки нагрузки)

1) Эта производительность наблюдается с одним сервером rabbitMQ, одним обменом и одна очередь. Что-нибудь еще можно настроить, хорошо-настроен на импровизацию пропускной способности до более чем 5 КБ в постоянном режиме.

2) Я понимаю, кластеризация может быть другим вариантом. Однако мне нужно настроить кластер на основе входящей нагрузки, и я могу не получить группировку / идентификацию сообщений для определения маршрутизации (поскольку ожидается, что сообщения будут просто описанием журнала). Могу ли я использовать кластеризацию после варианта балансировки нагрузки для рабочего / потребителя?

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

8
задан Anony-Mousse 6 January 2012 в 12:15
поделиться