Paul Querna wrote: > It breaks the 1:1: connection mapping to thread (or process) model > which is critical to low memory footprint, with thousands of > connections, maybe I'm just insane, but all of the servers taking > market share, like lighttpd, nginx, etc, all use this model. > > It also prevents all variations of the slowaris stupidity, because its > damn hard to overwhelm the actual connection processing if its all > async, and doesn't block a worker.
But as you've pointed out, it makes our heads bleed, and locks slow us down. At the lowest level, the event loop should be completely async, and be capable of supporting an arbitrary (probably very high) number of concurrent connections. If one connection slows or stops (deliberately or otherwise), it won't block any other connections on the same event loop, which will continue as normal. The only requirement is that each request accurately registers event deregistration functions in their cleanups, so that the request is cleanly deregistered and future events canceled on apr_pool_destroy(). The event loop can also choose to proactively kill too-slow connections if certain memory or concurrent connection threshholds are reached. Regards, Graham --
smime.p7s
Description: S/MIME Cryptographic Signature
