Nick Kew wrote:
Could that be done dynamically? As in, make the max keepalive time a
function of how near the server is to running out of spare workers?
Sure. I'd have to poke around a bit to see the best way to do it.
Speed is of utmost concern for us. I guess I could dynamically change
r->server->keep_alive_max or r->server->keep_alive_timeout? Maybe make
the timeout a "sliding" timeout something like:
/*calculate max_clients by querying mpm*/
/*is there a good, fast way to get idle workers?*/
/*store keep_alive_timeout somewhere*/
r->server->keep_alive_timeout = keepalive_timeout / (max_clients /
idle_workers);
Thoughts?
Also, have you looked into making keepalive dependent on resource type?
E.g. use them for HTML docs - which typically have inline contents - but
not for other media types unless REFERER is a local HTML page?
Sounds horribly slow... Also, in our case, HTML and other content come
from separate server pools. But most pages are made up of a few HTML
pages. (You have to look at the HTML source to see what I mean).
Also, we have some "app" servers that often have all connections tied up
in keepalive because the front ends open tons of keepalives (I have no
direct control of them).
I was hoping for a more generic solution that would maybe help others.
I'm sure there are others with similar situations.
--
Brian Akins
Lead Systems Engineer
CNN Internet Technologies