Какими могут быть ожидания производительности RabbitMQ на EC2? Буду признателен за обмен опытом здесь.
Я пытаюсь провести тест производительности RabbitMQ на aws EC2. У меня есть 3 отдельных экземпляра EC2 для RabbitMQ, Publisher и customer / worker.
Сценарий, который у меня есть, заключается в том, что Publisher толкает строку JSON (приблизительно 165-200 байт) для прямого обмена типами с длительным набором значений, равным true, и связывает очередь с долговременным набором значений, равным true (т.е. оба в постоянном режиме). Потребитель / работник работает на отдельной коробке - продолжает тянуть сообщения. (Ожидается, что продвижение этих сообщений на рабочем месте будет сохранено в MongoDB, и Publisher будет заменен сервисом Restful с использованием REST easy)
Для простоты я смоделировал этот сценарий с помощью примера кода Multicast. Я разделил многоадресный код на два отдельных Java-файла, а именно «Producer» и «Worker», чтобы запускать каждый из них в отдельном окне. Я использовал «c1.mediam» EC2 с 32-битным сервером Ubuntu v11.4 для запуска производителя и потребителя и «m1.large» с 64-битным сервером Ubuntu v11.4 для RabbitMQ.
Я могу достигнуть пропускной способности 3-5k сообщений в секунду, то есть, сохраняя скорость отправки сообщений исследования до 5K. (Это совпадает с http://www.rabbitmq.com/faq.html#performance-latency)
Далее, когда я увеличиваю скорость передачи до 10-12k сообщений в секунду. Потребительская способность потреблять сообщения падает до 1-2 тыс. Сообщений в секунду, и это создает отставание (во многих случаях оно также падает ниже 800 сообщений в секунду).
С вышеописанным сценарием у меня есть следующие вопросы, и я был бы признателен за мысли / предложения, чтобы улучшить пропускную способность потребителя. (ПРИМЕЧАНИЕ. Ожидается, что все сообщения в моем сценарии будут схожего типа, что не даст возможности сгруппировать их для настройки маршрутизации, поэтому может потребоваться некоторый подход с балансировкой нагрузки)
1) Такая производительность наблюдается с одним сервером rabbitMQ, одним обменом и одной очередью. Можно ли что-нибудь еще настроить, настроить для увеличения пропускной способности до 5 Кб в постоянном режиме.
2) Я понимаю, что кластеризация может быть другим вариантом. Однако мне нужно установить кластер на основе входящей нагрузки, и я не могу получить группировку сообщений / идентификацию для определения маршрутизации (так как сообщения, как ожидается, будут просто описанием журнала). Могу ли я иметь кластеризацию после опции балансировки нагрузки для работника / потребителя?
3) Ожидается, что я буду обрабатывать несколько сотен тысяч запросов в секунду. Буду признателен за обмен опытом и подходы для достижения этой цели.