[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apache-modperl
Subject:    Re: Getting keep-alive sorted
From:       "Carl Johnstone" <modperl () fadetoblack ! me ! uk>
Date:       2005-12-29 14:28:12
Message-ID: 003e01c60c84$195512e0$368110ac () men ! gmnews ! co ! uk
[Download RAW message or body]

> If so how do I do it?  I looked at the mod_perl docs and found:
> Apache2::Response->set_keep_alive()
>
> The example:
> $ret = $r->set_keepalive();

That overrides the default KeepAlive setting for this particular request.

> Doesn't really make sense to me.  I already have the following in my
> code:
>
> $r->no_cache(1);

The adds HTTP headers instructing the client (and any proxies) that they 
shouldn't cache the page.

There's no relation between those two - they're doing completely separate 
things.

All that KeepAlive does is allow a client to request multiple resources on 
the same connection. Instead of

connect
request resource
disconnect
connect
request resource
disconnect

the browser can do:

connect
request resource
request resource
disconnect


This generally works out bad for a mod_perl server, as you end up with a 
large number of apache processes, and therefore a large amount of server 
resources just sat around waiting to see if any further requests are going 
to come in on that connection.

For a basic apache install, that's mainly serving static content KeepAlive 
is an advantage as it reduces the amount of time spent opening and closing 
connections. Remember that in most situations you're going to serve a page, 
followed by some images and stylesheets.

So if you have a front-end/back-end setup the best config is:

KeepAlive Off

in the back-end mod_perl servers, and On in the front-end static/proxy 
servers.

Carl

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic