web-dev-qa-db-fra.com

RabbitMQ - Combien de files d'attente RabbitMQ peut gérer sur un seul serveur?

Je veux savoir combien de files d'attente maximum RabbitMQ peut gérer sur un seul serveur?

Cela dépend-il de la RAM? Cela dépend-il des processus erlang?

47
Raj Sf

Il n'y a aucune limite codée en dur à l'intérieur du courtier RabbitMQ. Le courtier utilisera toutes les ressources disponibles (sauf si vous définissez des limites sur certaines d'entre elles, elles sont appelées filigranes dans la terminologie RabbitMQ).

Il y a quelques limitations mises par Erlang lui-même, comme le nombre maximum de processus simultanés, mais si vous pouvez théoriquement les atteindre sur un seul nœud, alors c'est toujours une bonne idée d'utiliser fonctionnalités distribuées .

Il y a beaucoup de discussions sur l'utilisation et les limites des ressources RabbitMQ,

P.S. Il existe cependant une limite de protocole AMQP. Ils sont décrits dans la section 4.9 Limitations

Les spécifications AMQP imposent ces limites aux futures extensions d'AMQP ou de protocoles du même format filaire:

  • Nombre de canaux par connexion: numéro de canal 16 bits.
  • Nombre de classes de protocole: id de classe 16 bits.
  • Nombre de méthodes par classe de protocole: identifiant de méthode 16 bits.

Les spécifications AMQP imposent ces limites aux données:

  • Taille maximale d'une chaîne courte: 255 octets.
  • Taille maximale d'une longue chaîne ou table de champs: taille 32 bits.
  • Taille maximale d'une charge utile de trame: taille 32 bits.
  • Taille maximale d'un contenu: taille 64 bits.

Le serveur ou le client peut également imposer ses propres limites aux ressources telles que le nombre de connexions simultanées, le nombre de consommateurs par canal, le nombre de files d'attente, etc. Ceux-ci n'affectent pas l'interopérabilité et ne sont pas spécifiés.

46
pinepain

Ce message peut vous aider:

http://rabbitmq.1065348.n5.nabble.com/Max-messages-allowed-in-a-queue-in-RabbitMQ-td26063.html

[~ # ~] modifier [~ # ~]

1) Files d'attente max autorisées dans RabbitMQ?

Des milliers (voire des dizaines de milliers) de files d'attente ne devraient poser aucun problème, bien que chaque objet (par exemple, les files d'attente, les échanges, les liaisons, etc.) occupe de la mémoire et/ou de l'espace disque. Par défaut, Erlang appliquera un nombre maximal de processus simultanés (c'est-à-dire des threads légers) à environ 32 768 IIRC. Chaque file d'attente est gérée par son propre processus et chaque connexion peut en entraîner plusieurs autres, donc si vous prévoyez d'avoir un très grand nombre de files d'attente actives dans un seul nœud (?) Et de les utiliser toutes en même temps, alors vous peut avoir besoin de Tweak les arguments de l'émulateur lapin passe le VM en définissant + P à une limite supérieure.

Vous êtes également susceptible d'utiliser beaucoup de Go juste avec la surcharge pour chaque file d'attente/connexion assez rapidement, vous aurez donc besoin d'un serveur assez charnu pour gérer des millions des deux. Des dizaines de milliers ne devraient pas poser de problème du tout, à condition qu'elles s'insèrent dans la RAM.

22
Gabriele