(replying to both Tom and Mike)

I suspect it's not running into resource exhaustion of the usual kind (CPU, etc), but I don't have a clear proof.

To begin with, it's hard to track CPU/disk/memory usage because the test is finished quickly; I am tracking _stats with Sensu and Graphite but I need to increase time resolution. Anyway, when I'm under the connection limit the system uses all CPU cycles and generates some decent disk usage but not too much. Userspace RAM is at less than 50%. The DB responds fairly quickly, within a dozen seconds for all requests, or so.

Some ~1k requests in the pool (the first ones that issue a GET) work just fine. - node.js sends out "GET /db/_design/blah". CouchDB responds immediately with an empty ACK packet. - 7 seconds later there's a PSH/ACK from CouchDB containing the HTTP response headers (response headers to GET)
- node.js responds with an ACK
- CouchDB respons immediately with a PSH/ACK containing the JSON response (small JSON document) - immediately there's a FIN - FIN/ACK exchange both ways, closing the connection

The connections that are too late to send a GET are like this:
- node.js sends out "GET /db/_design/blah", and CouchDB responds with an empty ACK packet.
- And then there's silence on that connection.
- After 60 seconds, node.js times out its side of the channel by sending a FIN/ACK, to which the CouchDB instance responds with ACK. - After another 60 seconds of silence, I get another ACK packet from CouchDB, containing the HTTP headers of the response to the GET, but no data. The node.js instance goes "what is this? I've closed this channel already" and responds with a RST packet.
The logic of the exchange is broken.

It's interesting that there's a cut off after the winning ~1k connections in the "contest". If it was CPU exhaustion, I would expect a gradual buildup of failures.

How many concurrent connections should I expect 1.6.1 to be able to handle? Surely there are people out there that are doing more than 1k concurrently. What's the cookbook recipe for that?

--
Florin Andrei
http://florin.myip.org/

Reply via email to