Like everyone else who does moderately sophisticated server development, and especially the ones using Erlang, I hit the file descriptor limit for Mac OS X. I was hackng on Dynomite, testing the Membership2 branches’ bootstrap module, which moves files from one node to another during a join event. Erlang runs everything as lightweight threads, and if sockets are involved, they’re using file descriptors from the OS. The default on my MacBook was insanity-low, at 256. The solution is usually to:
% ulimit -n 1024
or some number of your choosing, like 512 or so. Fine, did that. But my open shells still had the old limit, and in addition, I wanted to make the change permanent. So, reading here, here, here, and here, I did the following (from the first article):
/etc/launchd.conf limit maxfiles 1024 unlimited
A coworker with a similar MacBook reported being able to use 8192 but I couldn’t get that to work. When I went above 1024 in the launchd.conf file, any call to erl with -name or -sname made epmd hang. So things are working now, and I’m moving on. Hope this was useful to someone.