Some time ago we had an internal report at $bigco that under a very specific load test, event performed significantly worse than worker. The particular test very fast/small responses with keepalive but no pipelining.
One clear culprit is each keepalive request (without pipelining to trigger the data-in-input-filters path) grabbing the timeout/keepalive mutex. Doing a one-socket poll on the request thread with even a fraction of a second before grabbing the mutex and giving the thread back allows things like static elements referenced from a page to be handled on the same thread (and without contention over the timeout/keepalive mutex). There might be a similar effect with Apache behind a reverse proxy that keeps the connection busy but doesn't pipeline. But, I don't know how damaging tieing up that thread will really be. And I don't know if we can be smart about when we sit on the thread. Any thoughts? -- Eric Covener [email protected]
