These people

http://bugs.php.net/bug.php?id=40472

are seeing a similar problem wth apache and php.



On Aug 13, 1:59 am, mdipierro <[email protected]> wrote:
> I originally misunderstood the issue. I thought the problem was with
> Rocket. web2py.com runs on Apache+mod_wsgi.
> In this case Apache decides on chunking, not web2py.
>
> It is strange but I do not know what is the Apache policy in this
> respect.
>
> Massimo
>
> On Aug 12, 9:59 pm, Jonathan Lundell <[email protected]> wrote:
>
> > On Aug 12, 2010, at 5:13 PM, mdipierro wrote:
>
> > > I looked at the Rocket web server:
>
> > > 1) it always responds with HTTP/1.1 even if client is HTTP/1.0. I am
> > > not sure this is allowed. I think not. A response must follow a
> > > protocol that is same or lower then requested protocol
> > > 2) it seems Rocket responds with chunked encoding in two cases: a) the
> > > request was chunked; b) if the wsgi app returns a list with more than
> > > one element (web2py can do this but normally does not do it).
>
> > > There is one caveat abdou 2) There is this code
>
> > >    def write(self, data, sections=None):
> > >        """ Write the data to the output socket. """
> > >        ....
> > >    if not self.headers_sent:
> > >            self.send_headers(data, sections)
>
> > > If it happens that  self.send_headers(data, None) is called, it will
> > > force chunked-encoding. I do not see how that can happen but I cannot
> > > exclude since I do not see the logic behind calling send_headers in
> > > two places.
>
> > What's odd is that we see the different cases on identical calls to the 
> > same URL.
>
> > I found the chunked logic a little confusing, probably because I don't 
> > really understand what it's trying to do, or how it gets called.
>
> > At least it seems easy to reproduce.
>
> > At least in my tests (through web2py.com), I'm seeing Apache. Is that 
> > mod_proxy?
>
> > > On Aug 12, 12:48 pm, Thadeus Burgess <[email protected]> wrote:
> > >> In my testings the errors were actually 500 internal server errors,
> > >> not content length issues. These pages were dynamic in that they
> > >> returned information from the database, but it was always the exact
> > >> same 10 records. The content length was not one of the reported failed
> > >> requests types. I can even replicate this with the welcome app, just
> > >> add a friends table, and a sqltable on the default/index page, insert
> > >> some records, then run ab on the index page, it always return sthe
> > >> same thing, but will generate roughly 15% error ratios not related to
> > >> content length (since it stays the same)
>
> > >> --
> > >> Thadeus
>
> > >> On Thu, Aug 12, 2010 at 12:27 PM, mdipierro <[email protected]> 
> > >> wrote:
> > >>> I think I figure it. It is not a bug in web2py. The Content-Length is
> > >>> not computed by web2py but it is computed by the web server and it is
> > >>> computed correctly.
>
> > >>> The length is actually different at each request.
>
> > >>> This is because:
> > >>> 1) in forms it contains the CSRF token with is a uuid and is different
> > >>> at each request
> > >>> 2) forms that contain a date may have different rounding for seconds
> > >>> 3) pages with display [request], [response], etc also contain datetime
> > >>> info which have different length at every request
>
> > >>> The second link Jonathan posted says:
>
> > >>> "Quite often you may see in the statistics "Failed requests: 5" or
> > >>> similar, followed by a list of the types of failure: "(Connect: 0,
> > >>> Receive: 0, Length: 5, Exceptions: 0)". If the only type of failure
> > >>> that actually occurred is 'Length' then don't be alarmed. This simply
> > >>> means that each request (for the same URL) returned a different length
> > >>> response, which ab regards as suspicious. However it's perfectly
> > >>> normal for dynamic webpages, especially if they include the time or
> > >>> other very dynamic data on the page. "
>
> > >>> This our case.
>
> > >>> Case closed?
>
> > >>> Massimo
>
> > >>> On Aug 12, 12:00 pm, mdipierro <[email protected]> wrote:
> > >>>> You are the man.
>
> > >>>> For the page I am considering the fail requests are not a real failure
> > >>>> but declare a content-length of 19383 (wrong) instead of 19384
> > >>>> (correct). Let's continue investigate...
>
> > >>>> Massimo
>
> > >>>> On Aug 12, 11:53 am, Jonathan Lundell <[email protected]> wrote:
>
> > >>>>> On Aug 12, 2010, at 8:44 AM, David Marko wrote:
>
> > >>>>>> Failed requests:        19
> > >>>>>>   (Connect: 0, Receive: 0, Length: 19, Exceptions: 0)
>
> > >>>>> Even more reassurance:
>
> > >>>>>http://stackoverflow.com/questions/1512304/failed-requests-by-length-...
>
> > >>>>>http://alwaysthecritic.typepad.com/atc/2009/04/apache-bench-notes.html
>
> > >>>>> The length variation should be checked, of course, but it may well be 
> > >>>>> harmless.
>
> > >>>>> If the length variation is under our control (cookie format, maybe?), 
> > >>>>> perhaps we could make an effort to make it the same.

Reply via email to