incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Adam Kocoloski <>
Subject Re: MochiWeb, acceptor pool sizes and handoffs
Date Wed, 14 Sep 2011 14:54:24 GMT
Hi Martin, iirc the default acceptor pool size is 16.

Here's how the pool works: those 16 processes are all competing to accept() a new connection
on the socket. When one of them succeeds it executes CouchDB's HTTP code and is replaced by
a newly-spawned process in the pool. The process now executing CouchDB code continues to loop,
handling requests on the connection until it's closed. At that point the process shuts down
-- it never returns to the pool.

NB: all of this applies to CouchDB 1.1.0+. CouchDB 1.0.x used an older version of Mochiweb
which did not have an pool of acceptor processes at all. Best,


On Wednesday, September 14, 2011 at 6:55 AM, Martin Hewitt wrote:

> Hi all,
> We've got a dedicated CouchDB server and I'm looking at ways we can improve its performance.
One I've hit on is increasing the size of the MochiWeb acceptor pool, but a background thought
occurred to me: does CouchDB hold open MochiWeb acceptor threads whilst it runs whatever process
(i.e. a view rebuild if a view's requested) is needed or does it hand-off to another thread,
returning the MochiWeb thread to the pool? Is the MochiWeb thread released if the client closes
the HTTP connection?
> We're currently using HEAD requests to keep view rebuilds ticking over, which works fine,
and, as far as I can tell, releases a MochiWeb thread right away, as soon as the request is
completed, but I'm just thinking about circumstances under which the thread pool might become
> An aside: what's the default size of the thread pool?
> Thanks,
> Martin 

View raw message