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/
85-rabbitmq.conf
# 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
vi /lib/systemd/system/rabbitmq-server.service
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#