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.
performance
rabbitmq
usuario21640
fuente
fuente
Respuestas:
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.
fuente
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):
fuente