[Seaside-dev] Comet request handling / Ajax performance

Nick Ager nick.ager at gmail.com
Thu Aug 5 08:30:21 UTC 2010


Could the discrepancy be down to the Windows 7 localhost dns issue see:
http://lists.squeakfoundation.org/pipermail/seaside/2010-March/023005.html

On 5 August 2010 08:40, Andreas Raab <andreas.raab at gmx.de> wrote:

> On 8/5/2010 12:27 AM, Gerhard Obermann wrote:
>
>> I tried the AjaxBench with Seaside 3.0RC without any modifications and I
>> get approx. 46 req/sec.
>> I dont't see the drop to 1 req/sec
>>
>
> Interesting. What browser/platform/adaptor were you using? With the
> standard Seaside 3 WAComancheAdaptor I see FF 3.6 on Windows dropping to 1
> req/sec; Chrome 5 / Windows appears to run at 6-7 req/sec but in very
> strange bursts. IE8 doesn't display anything. That's all the browsers I have
> right now :-)
>
> Cheers,
>  - Andreas
>
>  On Wed, Aug 4, 2010 at 6:21 AM, Andreas Raab <andreas.raab at gmx.de
>> <mailto:andreas.raab at gmx.de>> wrote:
>>
>>    Hi -
>>
>>    I have a couple of questions about Comet request handling and
>>    related performance issues. Comet currently insists on having a
>>    subclass of WAStreamedResponse but if one looks at the code more
>>    closely it is pretty clear that there's a bunch of unneeded
>>    complexity here. It seems to me that what Comet wants is access to
>>    the stream so it can push the data; but since the Comet request's
>>    life cycle is such that it never returns to the caller, the use of
>>    WAStreamedResponse is quite simply overkill. The same result can be
>>    achieved by having a WAResponse return a suitable #cometStream
>>    (i.e., the external socket stream to write data to) and prevent
>>    WABufferedResponse from inserting the Content-Length header when
>>    pushing out the initial response.
>>
>>    At this point, any subclass of WAResponse that can provide a
>>    suitable cometStream is capable of supporting Comet. I've
>>    implemented this as a proof of concept in a subclass of
>>    WABufferedResponse (see attached CometRequests.cs) that can be used
>>    by any server adaptor that has a SocketStream available, such as
>>    Comanche.
>>
>>    You might wonder why I care about this. Simply put: Ajax response
>>    times. I've been trying to see if one can get interactive update
>>    rates using Ajax updaters and/or Comet but the design of
>>    WABufferedResponse is such that that it pretty much forces the
>>    server to close the connection after each request. Which kills all
>>    the performance for Ajax requests since Ajax performance pretty much
>>    exclusively relies on persistent HTTP connections (in my experiments
>>    the performance drops from a nice steady 50 req/sec using a
>>    persistent HTTP connection to 1 req/sec when the connection is
>>    closed). I'm actually a little surprised that nobody has complained
>>    yet about the abysmal performance of Ajax :-) And of course this
>>    only gets worse when you do it over https which I eventually intend
>>    to do.
>>
>>    So, right now the alternative is that your server will EITHER
>>    support Comet OR efficient Ajax updates but not both. I can almost
>>    certainly work my way around this for WebServer but what I'm curious
>>    about is if people here think this should be fixed in Seaside in
>>    general or not. It depends a little on how you value both Comet and
>>    Ajax and how important wide and efficient support for either one is.
>>    I won't invest any more time in this for now, but there are a couple
>>    of obvious further simplifications given that WAStreamedResponse
>>    appears to be unused outside of Comet, and of course WACometResponse
>>    could be trivially folded into WABufferedResponse by pushing the
>>    cometStream up.
>>
>>    For comparison, I'm also attaching my little Ajax benchmark. If you
>>    run it with WAWebServerAdaptor you should see a nice steady 50
>>    req/secs whereas all other adaptors drop to about 1 req/sec.
>>
>>    Cheers,
>>      - Andreas
>>
>>    _______________________________________________
>>    seaside-dev mailing list
>>    seaside-dev at lists.squeakfoundation.org
>>    <mailto:seaside-dev at lists.squeakfoundation.org>
>>
>>    http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>
>>
>>
>>
>> _______________________________________________
>> seaside-dev mailing list
>> seaside-dev at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>
> _______________________________________________
> seaside-dev mailing list
> seaside-dev at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside-dev/attachments/20100805/52ad7835/attachment.htm


More information about the seaside-dev mailing list