Rabbitmq - Attentes raisonnables en termes de performances / d'échelle

13

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é.

user21640
la source
C'est extrêmement simple à tester, d'autant plus qu'avec les chiffres que vous attendez, vous avez un budget pour préparer certaines machines virtuelles. Je vous suggère fortement de le tester en fonction de votre cas d'utilisation exact, sur le matériel que vous attendez à utiliser.
Andrew M.
Jetez un œil aux plans de CloudAMQP - ce sont des chiffres de performances testés pour certaines configurations matérielles.
Rétablir Monica - M. Schröder

Réponses:

11

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.

Michael Dillon
la source
6

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):

voretaq7
la source
1
Je connais les nombreuses variables. C'est pourquoi j'ai mentionné des choses comme le matériel "moyen", entre guillemets, car je comprends à quel point une idée est floue. Néanmoins, je pensais que certains chiffres dérivés des expériences des peuples seraient utiles. Merci pour les références.
user21640
1
@ user21640 Ce n'est pas seulement le matériel qui ajoute du flou à votre question - le trading à haute fréquence peut avoir une idée différente de la «haute capacité» que vous ou moi, et des définitions très différentes des performances acceptables. En fin de compte, la seule personne dont l'expérience est importante est vous, dans votre environnement, et d'après mon expérience, une référence locale bien planifiée vaut des milliers de rapports externes en matière de confiance dans la planification des capacités - vous ne savez jamais quand votre charge de travail est LE cas pathologique: -)
voretaq7