Cambiar el limite de ficheros abiertos de RabbitMQ en tiempo de ejecución
Por defecto el usuario con el que corre RabbitMQ tiene un límite de ficheros abiertos de 1024 si no se configuró dicho limite con antelación. Si el proceso no puede ser reiniciado para hacer efectivo un nuevo límite, es factible hacer dicha modificación en tiempo de ejecución. Se muestra a continuación los pasos a seguir con un ejemplo práctico.
Lectura previa recomendada: https://www.busindre.com/configurar_limite_de_ficheros_abiertos
Visualizar el límite configurado que tiene el servicio RabbitMQ en ejecución.
/etc/init.d/rabbitmq-server status Status of node 'rabbit@srv-dm-mq' ... [{pid,19791}, ... {file_descriptors, [{total_limit,924}, <------------- {total_used,35}, {sockets_limit,829}, {sockets_used,31}]}, {processes,[{limit,1048576},{used,511}]}, {run_queue,0}, {uptime,31107085}] ...done.
Identificar los PID de los de procesos de RabbitMQ.
19481 19782 19791 19896 19897
Adaptar el límite de ficheros abiertos a 65536 para dichos procesos en ejecución.
prlimit -n65536:65536 -n -p 19481 prlimit -n65536:65536 -n -p 19782 prlimit -n65536:65536 -n -p 19791 prlimit -n65536:65536 -n -p 19896 prlimit -n65536:65536 -n -p 19897
Se debe ejecutar el siguiente comando para que sea efectivo en RabbitMQ, se resta 100 al valor configurado previamente (65535 - 100).
rabbitmqctl eval "file_handle_cache:set_limit(65436)."
Se comprueba si los cambios han tenido efecto.
service rabbitmq-server status Status of node 'rabbit@srv-dm-mq' ... [{pid,19791}, ... {file_descriptors, [{total_limit,65436}, <--------------------- {total_used,35}, {sockets_limit,58890}, {sockets_used,31}]}, {processes,[{limit,1048576},{used,511}]}, {run_queue,0}, {uptime,31110056}] ...done.