Running a system with both RabbitMQ and Riak can use up file descriptors like they are going out of fashion. Most distributions have a woefully low limit (Mac OS X has a default of 256) causing unsightly errors sooner than you would expect. Resolving this is easy, and some people suggest setting it to some arbitrarily large number (at least on Linux).
On my machine, using a three node Riak cluster and a single node for RabbitMQ, this is what I found so far:
gindara:dev brian$ ls dev1/data/bitcask/*/* | wc -l 386 gindara:dev brian$ ls dev2/data/bitcask/*/* | wc -l 188 gindara:dev brian$ ls dev3/data/bitcask/*/* | wc -l 168 gindara:~ brian$ sudo lsof -u rabbitmq -d ^txt | wc -l 2715
So files definitely get created quickly. The Basho blog says to update the open files limit for proper operation of riak to 2048 in their example. Running both apps seems to warrant going for the arbitrarily large number solution.
As many places document, do this for Linux:
$ ulimit -n 1048576
and forever by updating the system-wide and user limits.
On Mac OS X do this from command line
launchctl limit maxfiles 1048576
and forever in launchd.conf
sudo echo "limit maxfiles 1048576" > /etc/launchd.conf
RabbitMQ will happily work with a small number of file descriptors. It does *benefit* from having more file descriptors, but it doesn’t *need* them, except of course when it’s meant to accept lots of connections.
LikeLike