You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by cr...@animalhead.com on 2007/01/19 01:06:54 UTC

Apache2::Request fouls up content length?

I'm still hoping for a good answer on my previous build problem.
But for now I'm proceeding with testing using the mod_perl that
my hosting provider set up.

The first script that I've tested that uses Apache2::Request gives
a problem.  The browser sits and waits for its timeout period,
then the complete expected response is available.  My limited
experience suggests this is probably because the response's
content-length value is fouled up (or the header isn't sent?).

My "server signature" is
Apache/2.2.3 (Unix) mod_ssl/2.2.3 OpenSSL/0.9.7e-p1  
mod_apreq2-20051231/2.5.7 mod_perl/2.0.2 Perl/v5.8.7 Server at  
mackenna1.securesites.net

OS is FreeBSD 6.  The problem happens under both http: and https:.

mod_deflate and mod_include are also active for the transaction.

Anyone can see the problem at
http://mackenna1.securesites.net/contact.html

which is the site's contact form.  If you just hit "send" without  
entering
anything, you'll get a response that says you didn't enter anything,
but it will take a long time.

Apache2::Request had bigger problems until I included the following
line in httpd.conf:
LoadModule apreq_module modules/mod_apreq2.so

That .so was also provided by my hosting provider (Verio).

Does this sound familiar?  Could it be avoided by newer versions of
any of the software?

Craig MacKenna
Los Gatos, CA


Re: Apache2::Request fouls up content length?

Posted by cr...@animalhead.com.
Jonathan, thank you for your replies!

The client I'm testing with is, in most contexts, not "slow".  It's a
dual-processor 1.25 MHz PowerMac on a DSL line, with the Safari
browser which does most things faster than any other PC or Mac
browser I've used.

Thought I had a solution: since my two pages containing forms
are both under SSL, I put "KeepAlive On" in the virtual host for 80,
and "KeepAlive Off" in the virtual host for 443.

Unfortunately this did not fix the problem, from an SSL page.

Apache::Request worked with KeepAlive under Apache 1 and
mod_perl 1.  So I feel like things have gone backward...

My front page downloads a series of 80+ small jpg's, and the impact
of a general KeepAlive Off on that operation is unacceptable.

The complexity of a "multi-server / multi-apache setup" is more than
I want to deal with.

I much prefer KeepAlive on a single Apache to using Apache2::Request
on a multi-server solution.  It's easy enough to get the form data and
parse it myself.

1. Do you think the problem is in mod_perl or apreq2?
2. Does that module have a bug reporting system (other than this
     mailing list) ?
3. Is there a known bug for Apache2::Request vs. KeepAlive?
4. If not, where can I post one, so this can be fixed for other people?

Thanks for your help,
Craig MacKenna
www.animalhead.com


On Jan 18, 2007, at 5:26 PM, Jonathan Vanasco wrote:

>
> On Jan 18, 2007, at 8:14 PM, craig@animalhead.com wrote:
>
>> You are correct.  Turning off keepalive fixes the problem.
>> (We're on a VPS so we have control of httpd.conf.)
>>
>> My residual problem is that neither KeepAlive nor
>> MaxKeepAliveRequests is allowed in a <Location> block, so
>> I can't just do one of them for the scripts that use  
>> Apache2::Request.
>>
>> Anyone have a way to keep KeepAlive and Apache2::Request?
>> Might newer versions of any of the software involved fix the problem?
>>
>> Thanks much,
>> Craig MacKenna
>> www.animalhead.com
>
> personally, I would suggest this:
>
> 	forget about keepalive in modperl
>
> 	don't run mod_perl on port 80.  run a proxy on it -- either apache  
> or something lightweight like nginx
> 	run your app on port  80xx using its own apache.  have keepalive  
> turned off.
> 	keepalive can be turn on in your port 80 dae,pm
> 	serve static off the proxy, only hit up mp for dynamic content.
>
> its not as fast as if you had keepalive on the proxied connection,  
> but its still considerably faster than not-proxying , and you don't  
> deal with any of the issues of a slow-client tying up your modperl  
> process
>
> there's a section in the modperl book explaining the multi-server /  
> multi-apache setup in depth.  its online, via google
>
>
> // Jonathan Vanasco
>
> | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
> - - - - - - - - - - - - - - - - -
> | FindMeOn.com - The cure for Multiple Web Personality Disorder
> | Web Identity Management and 3D Social Networking
> | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
> - - - - - - - - - - - - - - - - -
> | RoadSound.com - Tools For Bands, Stuff For Fans
> | Collaborative Online Management And Syndication Tools
> | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
> - - - - - - - - - - - - - - - - -
>


Re: Apache2::Request fouls up content length?

Posted by Jonathan Vanasco <jv...@2xlp.com>.
On Jan 18, 2007, at 8:14 PM, craig@animalhead.com wrote:

> You are correct.  Turning off keepalive fixes the problem.
> (We're on a VPS so we have control of httpd.conf.)
>
> My residual problem is that neither KeepAlive nor
> MaxKeepAliveRequests is allowed in a <Location> block, so
> I can't just do one of them for the scripts that use Apache2::Request.
>
> Anyone have a way to keep KeepAlive and Apache2::Request?
> Might newer versions of any of the software involved fix the problem?
>
> Thanks much,
> Craig MacKenna
> www.animalhead.com

personally, I would suggest this:

	forget about keepalive in modperl

	don't run mod_perl on port 80.  run a proxy on it -- either apache  
or something lightweight like nginx
	run your app on port  80xx using its own apache.  have keepalive  
turned off.
	keepalive can be turn on in your port 80 dae,pm
	serve static off the proxy, only hit up mp for dynamic content.

its not as fast as if you had keepalive on the proxied connection,  
but its still considerably faster than not-proxying , and you don't  
deal with any of the issues of a slow-client tying up your modperl  
process

there's a section in the modperl book explaining the multi-server /  
multi-apache setup in depth.  its online, via google


// Jonathan Vanasco

| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
- - - - - - - - - - - - - - - -
| FindMeOn.com - The cure for Multiple Web Personality Disorder
| Web Identity Management and 3D Social Networking
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
- - - - - - - - - - - - - - - -
| RoadSound.com - Tools For Bands, Stuff For Fans
| Collaborative Online Management And Syndication Tools
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
- - - - - - - - - - - - - - - -



Re: Apache2::Request fouls up content length?

Posted by Jonathan Vanasco <jv...@2xlp.com>.
it sounds to me like a keepalive problem

try
	KeepAlive Off

if you really want it on, try
	MaxKeepAliveRequests 10
	KeepAliveTimeout 3

but you may not be able to specify either, as its an apache config  
option.



// Jonathan Vanasco

| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
- - - - - - - - - - - - - - - -
| FindMeOn.com - The cure for Multiple Web Personality Disorder
| Web Identity Management and 3D Social Networking
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
- - - - - - - - - - - - - - - -
| RoadSound.com - Tools For Bands, Stuff For Fans
| Collaborative Online Management And Syndication Tools
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
- - - - - - - - - - - - - - - -