Je serais reconnaissant si quelqu'un pouvait me diriger vers des chiffres / limitations d'échelle raisonnables sur rabbitmq (sur du matériel "moyen", fwiw) ou publier votre expérience avec ses performances. J'essaie de me faire une idée de la capacité du nombre de files d'attente, du nombre d'abonnés dans les files d'attente, des implications en termes de performances d'avoir des centaines ou des milliers d'auditeurs dans les files d'attente de fanout, de tous les numéros durs que n'importe qui pourrait avoir exécutant lapin dans un environnement à haute capacité.
performance
rabbitmq
user21640
la source
la source
Réponses:
Tout d'abord, vous devez comprendre quels éléments de votre liste ont des limites de mise à l'échelle que vous pourriez atteindre et lesquelles ne le sont pas. Une partie de cela dépend de l'implémentation, donc cela aide à lire sur les internes, par exemple le livre RabbitMQ en action.
Le nombre de files d'attente est limité par votre RAM. Le nombre de messages en jeu, en revanche, n'est pas limité par la RAM car RabbitMQ les envoie automatiquement sur le disque. Une fois, j'ai eu accidentellement près de 8 millions de messages en jeu sur un serveur de développement alors que je n'y prêtais pas attention.
Il n'y a également aucune limite à la taille des messages, mais vous devriez vraiment y réfléchir à deux fois si la taille d'un seul message dépasse 512 Ko. J'ai fini par utiliser un cache mémoire pour passer de gros objets entre les applications et n'ai envoyé que des messages de contrôle plus petits qui comprenaient une clé memcache. Mais si vous le voulez vraiment, vous pouvez envoyer d'énormes JPEG et objets binaires comme des fichiers JAR sous forme de messages.
Le nombre d'abonnés est une limite de système d'exploitation, car un abonné a besoin d'au moins un socket TCP ouvert. Bien sûr, cela est réglable dans la plupart des systèmes d'exploitation, donc votre kilométrage variera et c'est pourquoi vous devez tester votre modèle. J'utilise JMETER pour tester la charge de nos applications Web et je viens de découvrir ce plugin AMQP https://github.com/jlavallee/JMeter-Rabbit-AMQP mais je ne l'ai pas encore utilisé. Dans tous les cas, c'est le genre de test qui vous dira rapidement ce que votre matériel (ou configuration VM) gérera raisonnablement.
La seule chose difficile que vous avez est de tester un grand nombre de consommateurs dans les files d'attente de fanout. Vous pouvez également comparer à l'aide d'un échange de sujets à la place, les consommateurs s'abonnant à l'aide d'une clé de liaison générique (*) qui permet d'obtenir le même résultat final. Essayez d'exécuter ce test avec autant de machines différentes que possible pour vous assurer que vous ne rencontrez pas en quelque sorte un goulot d'étranglement provoqué par un serveur unique exécutant des processus grand public. PS que le plugin Jmeter ressemble, il peut également être utile pour simuler les consommateurs.
la source
Ce n'est pas vraiment une question à laquelle il faut répondre - il y a trop de facteurs (la définition mouvante du matériel "moyen", la taille des messages dans la file d'attente, le nombre de consommateurs et la fréquence à laquelle ils interrogent / la vitesse à laquelle ils terminent le travail dans les messages, etc. .). Vous avez vraiment besoin de comparer votre environnement.
Cela dit, consultez certaines de ces discussions sur les performances de RabbitMQ (y compris quelques idées sur la façon dont vous pouvez comparer votre installation pour voir ce que vous pouvez attendre de Rabbit):
la source