RabbitMQ + Memory Limits
Ich bin gerade auf der Suche in der config-details von RabbitMQ und kam über
[{rabbit, [{vm_memory_high_watermark, 0},
{disk_free_limit, {mem_relative, 1.0}}
]
}]
Was bedeutet diese config bedeuten?
vm_memory_high_watermark
auf 0 gesetzt bedeutet, dass => Block alle Verlage sofort die rabbitmq-app startet? Aber wir sehen noch rabbitmq in der Lage zu Warteschlange was auch immer Nachrichten, die wir versenden.
16720 rabbitmq 20 0 142m 62m 2408 S 0 **1.6** 0:06.88 beam.smp
Immer, wenn wir das senden von Nachrichten an den broker, die wir se dieser Prozess' memory-Nutzung steigt. Also, bedeutet das, dass die Nachrichten im Speicher sind, obwohl das Wasserzeichen ist auf 0 gesetzt?
Wir sind neugierig zu wissen, was passiert, wenn die mem-limit-ram erreicht und noch immer Nachrichten gesendet werden? Entweder die Verlage gesperrt sind? oder Die Nachrichten auf die Festplatte ausgelagert, falls verfügbar?
InformationsquelleAutor Tamil | 2012-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den vm_memory_high_watermark ist ein Prozentwert ist bezogen auf memory flow control in RabbitMQ.
Wenn man einen Blick auf Memory flow control Sie werden sehen, dass es sagt, unter "Memory-Based Flow Control" überschrift:
So, indem Sie den Wert 0, dann ist es natürlich löst sofort! Wenn Sie möchten, RabbitMQ, um erlaubt zu werden, um mehr Speicher verwenden, dann werden Sie wollen, um den Wert zu ERHÖHEN.
Ein weiterer wichtiger Hinweis:
Also, wenn Sie versuchen, yo Nachrichten veröffentlichen, wenn der alarm ausgelöst wurde, dann Ihre Verlage werden blockiert das senden von Nachrichten.
Wenn Sie möchten, um zu blockieren alle Verlage dann legen Sie die vm_memory_high_watermark auf 0. Wenn Sie wollen, deaktivieren Sie' memory-based flow control setzen Sie dann die vm_memory_high_watermark zum 100. Sehen Sie details aus dem obigen link:
Gedrosselt wird in dieser situation Ergebnis der Verlage wird komplett blockiert (da der alarm ausgelöst worden ist). Bei Angabe von 0%, dann hast du Recht, wird der alarm ausgelöst und alle Verlage werden blockiert. Wenn Sie deaktivieren möchten, memory-based flow control setzen Sie den Wert auf 100, 0 wird nur alles blockieren
Ich habe meine Antwort aktualisiert
Eigentlich haben wir gerade lief die basic sender Beispiel und fand, dass die Nachrichten gesendet werden, aber jetzt bemerkten wir, dass die Nachrichten nicht empfangen. So, als ganzes, sollten wir noch ein paar ram mem für die Nachrichten so, dass rmq kann atleast swap-msg-Befehle müssen auf der Festplatte
"legen Sie die vm_memory_high_watermark 100" Sollte das nicht 1 sein, da es gebrochene Zahl?
InformationsquelleAutor kzhen