We ran into a need to increase file descriptors for RabbitMQ running on RHEL 6. The simple solution was to add a file owned by root to /etc/security/limits.d/
# Default limit for rabbitmq which needs more
# file handles than the default user settings
rabbitmq soft nofile 49152
rabbitmq hard nofile 49152
And after restarting RabbitMQ, the new file descriptors count is reflected in the web admin home page.
Some time passed and we had decided to migrate to RHEL 7. We also upgraded to RabbitMQ 3.6.6. After the migration, it was discovered that the file descriptors limit was back to the default value. It was quite clear that our 85-rabbitmq.conf limits file was being ignored. After some research, it appears that systemd services will ignore the limits values.
The solution is to edit the systemd service file and add the limits value to the service. So to increase RabbitMQ’s file descriptors on RHEL / CentOS 7
Add LimitNOFILE to the Service section
[Unit] Description=RabbitMQ broker After=syslog.target network.target [Service] Type=notify User=rabbitmq Group=rabbitmq WorkingDirectory=/var/lib/rabbitmq ExecStart=/usr/sbin/rabbitmq-server ExecStop=/usr/sbin/rabbitmqctl stop NotifyAccess=all TimeoutStartSec=3600 LimitNOFILE=49152 [Install] WantedBy=multi-user.target
A reference to all the limits settings can be found here https://www.freedesktop.org/software/systemd/man/systemd.exec.html#