Notre équipe est dans un sprint de pointe pour choisir entre ActiveMQ ou RabbitMQ. Nous avons fait 2 petits pics producteurs/consommateurs en envoyant un message d'objet avec un tableau de 16 chaînes, un horodatage et 2 entiers. Les pointes sont correctes sur nos devs machines (les messages sont bien consommés).Les consommateurs de messages RabbitMQ arrêtent de consommer des messages
Puis vint les bancs. Nous avons d'abord remarqué que parfois, sur nos machines, lorsque nous envoyions beaucoup de messages, le consommateur était parfois suspendu. C'était là, mais les messages s'accumulaient dans la file d'attente.
Quand nous sommes allés sur le banc plateform:
- groupe de 2 machines à RabbitMQ 4 cœurs/3.2Ghz, 4Go de RAM, la charge est équilibrée par un VIP
- un à 6 consommateurs en cours d'exécution sur les machines à RabbitMQ, enregistrer les messages dans un DB mysql (même type de machine pour la DB)
- 12 producteurs fonctionnant sur 12 machines AS (tomcat), attaquées avec jmeter fonctionnant sur une autre machine. La charge est d'environ 600 à 700 requêtes http par seconde, sur les servlets qui produisent la même charge de messages RabbitMQ.
Nous avons remarqué que parfois, les consommateurs hang (bien, ils ne sont pas bloqués, mais ils ne consomment plus des messages). Nous pouvons voir que chaque consommateur économise environ 100 msg/sec dans la base de données, donc quand on arrête de consommer, les messages globaux enregistrés par seconde en DB tombent avec le même ratio (si disons 3 consommateurs s'arrêtent, nous tombons autour de 600 msg/sec à 300 msg/sec).
Pendant ce temps, les producteurs sont ok, et produisent toujours au taux de jmeter (environ 600 msg/sec). Les messages sont dans les files d'attente et pris par les consommateurs encore "vivants".
Nous chargeons d'abord toutes les servlets avec les producteurs, puis lancons tous les consommateurs un par un, vérifiant si les connexions sont correctes, puis exécutons jmeter.
Nous envoyons des messages à un seul central. Tous les consommateurs écoutent une file d'attente persistante liée à l'échange.
Ce point est majeur pour notre choix. Avez-vous vu cela avec Rabbitmq, avez-vous une idée de ce qui se passe?
Merci pour vos réponses.
Cela peut être plus approprié pour serverfault. – danben
Merci, je l'afficherai dans serverfault non plus. –
Etrange qu'il n'y a aucune mention de versions. Par exemple, Ubuntu et Debian ont tendance à empaqueter des versions plus anciennes mais quand c'est un outil critique qui est en développement actif, comme RabbitMQm, il est préférable d'exécuter des versions plus récentes. –