[Seaside-dev] Comet request handling / Ajax performance
Gerhard Obermann
obi068 at gmail.com
Thu Aug 5 11:21:16 UTC 2010
Yes i think that could be the problem, i always use 127.0.0.1 to avoid such
issues!
I am using Windows 7, Pharo 1.0, Seaside 3.0 (most recent versions are
loaded) WAKom and firefox 3.6.8!
Gerhard
On Thu, Aug 5, 2010 at 10:30 AM, Nick Ager <nick.ager at gmail.com> wrote:
> 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
>>
>
>
> _______________________________________________
> 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/b765cf4b/attachment.htm
More information about the seaside-dev
mailing list