Apachebench on node.js server returning “apr_poll: The timeout specified has expired (70007)” after ~30 requests

abbenchmarknode.js

I just started working with node.js and doing some experimental load testing with ab is returning an error at around 30 requests or so.

I've found other pages showing a lot better concurrency numbers than I am such as:
http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php

Are there some critical server configuration settings that need done to achieve those numbers?

I've watched memory on top and I still see a decent amount of free memory while running ab, watched mongostat as well and not seeing anything that looks suspicious.

The command I'm running, and the error is:

ab -k -n 100 -c 10 postrockandbeyond.com/
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking postrockandbeyond.com (be patient)...apr_poll: The timeout specified has   expired (70007)
Total of 32 requests completed

Does anyone have any suggestions on things I should look in to that may be causing this? I'm running it on osx lion, but have also run the same command on the server with the same results.

EDIT:
I eventually solved this issue. I was using a TTAPI, which was connecting to turntable.fm through websockets. On the homepage, I was connecting on every request. So what was happening was that after a certain number of connections, everything would fall apart. If you're running into the same issue, check out whether you are hitting external services each request.

Best Answer

According to this blog post, this is because apache bench makes HTTP/1.0 requests, which cause node to close the connection, as of node 0.6+.

I'm not sure why; it seems kind of like a node bug.

Anyways, the short answer is to use something else. I've been using httperf which seems better anyways.

Related Topic