Rabbitmq: rendimiento razonable / expectativas de escala

13

Estaría agradecido si alguien pudiera señalarme en la dirección de algunas cifras / limitaciones de escala razonables en rabbitmq (en hardware "promedio", fwiw) o publicar su experiencia con su rendimiento. Estoy tratando de tener una idea de la capacidad para la cantidad de colas, la cantidad de suscriptores en las colas, las implicaciones de rendimiento de tener cientos o miles de oyentes en las colas de fanout, cualquier número difícil que alguien pueda tener conejo en un entorno de alta capacidad.

usuario21640
fuente
Esto es extremadamente simple de probar, especialmente teniendo en cuenta que, con los números que espera, tiene un presupuesto para preparar algunas máquinas virtuales. Le sugiero que lo pruebe basándose en su caso de uso exacto, en el hardware que esperaría usar.
Andrew M.
Eche un vistazo a los planes de CloudAMQP : estos son números de rendimiento probados para ciertas configuraciones de hardware.
Restablece a Monica - M. Schröder el

Respuestas:

11

En primer lugar, debe comprender qué elementos de su lista tienen límites de escala que podría alcanzar y cuáles no. Algo de esto depende de la implementación, por lo que ayuda a leer lo interno, por ejemplo, el libro RabbitMQ en acción.

El número de colas está limitado por su RAM. El número de mensajes en juego, por otro lado, no está limitado por RAM porque RabbitMQ los pagina automáticamente en el disco. Una vez, accidentalmente obtuve casi 8 millones de mensajes en juego en un servidor de desarrollo cuando no estaba prestando atención.

Tampoco hay límite para los tamaños de los mensajes, pero realmente debería pensarlo dos veces si el tamaño de un solo mensaje supera los 512K. Terminé usando una memoria caché para pasar objetos grandes entre aplicaciones y solo envié mensajes de control más pequeños que incluían una clave de memoria caché. Pero si realmente lo desea, puede enviar enormes archivos JPEG y objetos binarios como archivos JAR como mensajes.

El número de suscriptores es un límite del sistema operativo porque un suscriptor necesita al menos un socket TCP abierto. Por supuesto, eso se puede ajustar en la mayoría de los sistemas operativos, por lo que su kilometraje variará y es por eso que debe probar su modelo. He estado usando JMETER para probar nuestras aplicaciones web y acabo de descubrir este complemento AMQP https://github.com/jlavallee/JMeter-Rabbit-AMQP pero aún no lo he usado. En cualquier caso, este es el tipo de prueba que le dirá rápidamente lo que su hardware (o configuración de VM) manejará razonablemente.

Lo único difícil que tiene es probar un gran número de consumidores en las colas de fanout. Es posible que también desee comparar utilizando un intercambio de temas, en el que los consumidores se suscriban utilizando una clave de enlace comodín (*) que logra el mismo resultado final. Intente ejecutar esta prueba con tantas máquinas diferentes como sea posible para asegurarse de que de alguna manera no se encuentre con un cuello de botella causado por un solo servidor que ejecuta procesos de consumo. PD: parece que el plugin Jmeter también puede ser útil para simular consumidores.

Michael Dillon
fuente
6

Esta no es realmente una pregunta que responda: hay demasiados factores (la definición móvil de hardware "promedio", el tamaño de los mensajes en la cola, el número de consumidores y la frecuencia con la que sondean / qué tan rápido completan el trabajo en los mensajes, etc. .). Realmente necesitas comparar tu entorno.

Dicho esto, revise algunas de estas discusiones sobre el rendimiento de RabbitMQ (incluidas algunas ideas sobre cómo puede comparar su instalación para ver qué puede esperar de Rabbit):

voretaq7
fuente
1
Soy consciente de las muchas variables. Es por eso que mencioné cosas como hardware "promedio", entre comillas, ya que entiendo cuán borrosa es esa idea. Sin embargo, pensé que algunos números derivados de las experiencias de las personas serían útiles. Gracias por las referencias.
user21640
1
@ user21640 No es solo el hardware el que agrega confusión a su pregunta: el comercio de alta frecuencia puede tener una idea diferente de "alta capacidad" que usted o yo, y definiciones muy diferentes de rendimiento aceptable. En última instancia, la única persona cuya experiencia es importante es usted, en su entorno, y en mi experiencia un punto de referencia local bien planificado vale miles de informes externos cuando se trata de confianza en la planificación de la capacidad: nunca se sabe cuándo su carga de trabajo es EL caso patológico: -)
voretaq7