memory-management - configurar - etc rabbitmq rabbitmq config not found
Reduce el uso de la memoria RabbitMQ (2)
Asegúrese de establecer un valor apropiado de captación previa de QoS. De forma predeterminada, si hay un cliente, el servidor Rabbit enviará al cliente los mensajes que tenga para la cola del cliente. Esto da como resultado un uso extenso de la memoria tanto en el cliente como en el servidor.
Coloque el límite de captación previa en algo razonable, como por ejemplo 100, y Rabbit guardará los mensajes restantes en el disco en el servidor hasta que el cliente esté realmente listo para procesarlos, y su uso de memoria disminuirá tanto en el cliente como en el servidor.
Tenga en cuenta que la sugerencia de 100 es simplemente un lugar razonable para comenzar, seguro que supera al infinito. Para optimizar realmente ese número, debe tener en cuenta los mensajes / seg. Que su cliente puede procesar, la latencia de su red y también qué tan grande es cada uno de sus mensajes en promedio.
Estoy tratando de ejecutar RabbitMQ en un pequeño VPS (512mb RAM) junto con Nginx y algunos otros programas. Pude modificar el uso de la memoria de todo lo demás sin dificultad, pero parece que RabbitMQ no puede usar menos memoria RAM.
Creo que necesito reducir el número de subprocesos que Erlang usa para RabbitMQ, pero no he podido hacer que funcione. También intenté configurar vm_memory_high_watermark
en unos valores diferentes por debajo del valor predeterminado (del 40%), incluso tan bajo como el 5%.
Parte del problema podría ser que el proveedor de VPS (MediaTemple) me permite revisar mi memoria asignada, por lo que cuando uso libre o superior, muestra que el servidor tiene alrededor de 900mb.
¿Alguna sugerencia para reducir el uso de memoria por parte de RabbitMQ, o limitar el número de hilos que creará Erlang? Creo que Erlang está usando 30 hilos, basados en la bandera -A30 que he visto en el comando de proceso.
Idealmente, me gustaría que el uso de la memoria RabbitMQ sea inferior a 100mb.
Editar:
Con vm_memory_high_watermark
establecido en 5% (o 0.05 en el archivo de configuración), los registros de RabbitMQ informan que el límite de memoria de RabbitMQ está establecido en 51mb. No estoy seguro de dónde viene 51mb. La memoria asignada de VPS actual es de 924 mb, por lo que el 5% de eso debería ser de alrededor de 46 mb.
De acuerdo con htop / free antes de iniciar RabbitMQ, estoy sentado alrededor de 453 mb de ram utilizado, y después de iniciar RabbitMQ estoy alrededor de 650 mb. Aumento de casi 200 mb. ¿Podría ser que 200mb es el límite inferior con el que se ejecutará RabbitMQ?
Editar 2
Aquí hay algunas capturas de pantalla de ps aux y gratis antes y después de iniciar RabbitMQ y un gráfico que muestra el pico de memoria cuando se inicia RabbitMQ.
Editar 3
También verifiqué que no había complementos habilitados, y eso hizo muy poca diferencia. Parece que los complementos que tenía (gestión y sus requisitos previos) solo añadían unos 8 MB de uso de ram.
Editar 4
Ya no tengo este servidor para probar, sin embargo, hay una configuración de configuración delegate_count
que se establece en un valor predeterminado de 16. Por lo que sé, esto genera 16 sup-procs para rabbitmq. Bajar este número en servidores más pequeños puede ayudar a reducir la huella de memoria. No tengo idea si esto realmente funciona, o cómo afecta el rendimiento, pero es algo que debes probar.
La forma adecuada de limitar el uso de memoria en RabbitMQ es usar vm_memory_high_watermark
. Tu dijiste:
También intenté configurar vm_memory_high_watermark en unos valores diferentes por debajo del valor predeterminado (del 40%), incluso tan bajo como el 5%.
Esto debería funcionar, pero puede que no se comporte de la manera esperada. En los registros, encontrará una línea que le dice cuál es el límite de memoria absoluta, algo como esto:
=INFO REPORT==== 29-Oct-2009::15:43:27 ===
Memory limit set to 2048MB.
Necesita ajustar el límite de memoria según sea necesario: Rabbit podría ver que su sistema tiene mucha más memoria RAM de la que cree que tiene si está ejecutando en un entorno VPS.
A veces, Rabbit no puede decir en qué sistema estás y usa 1GB como punto base (por lo que obtienes un límite de 410 MB por defecto).
Además, asegúrese de ejecutar una versión de RabbitMQ que admita la configuración vm_memory_high_watermark
; lo ideal sería que se ejecute con la última versión estable.