Trying to Tune CouchDB
When faced with the idea that CouchDB might be running low on sockets (file handles), I decided to do a little digging into the CentOS 5 configuration, and see what I could do. Turns out it wasn't all that hard, and I got immediate results. The first thing is to up the hard and soft limits on the file handles in /etc/security/limits.conf for the couchdb user:
couchdb soft nofile 32768 couchdb hard nofile 60000
then simply restart CouchDB. Look at the process limits by:
$ cat /proc/1234/limits
where 1234 is the pid of the erlang 'beam' process, and see what it says. You are also going to need to tell Erlang about the number of file handles in the /usr/local/etc/default/couchdb file:
export ERL_MAX_PORTS=32768 export ERL_FLAGS="+A 8"
The second little bit there is to allow 8 threads in Erlang to process disk updates. This multi-threaded filesystem access isn't on be default for Erlang, so if you're on a big box with lots of cores, it makes a lot of sense to turn it on.
With these, you have CouchDB running about as well as you can get. The rest is up to you.