[Seaside] HTTP Performance
Stephen Pair
stephen at pairhome.net
Thu Nov 20 14:45:44 CET 2003
Julian Fitzell wrote:
> Avi Bryant wrote:
>
>>
>> On Nov 19, 2003, at 5:21 PM, Nevin Pratt wrote:
>>
>>> Sven Van Caekenberghe wrote:
>>>
>>>>
>>>> That doesn't change the fact that you need a certain level of
>>>> performance to be able to serve public sites. And IMHO the test was
>>>> reasonably fair for all. The goal of the dynamic vs. static page
>>>> was to get an idea of the overhead for dynamic pages.
>>>
>>>
>>>
>>> In my experience, a lowly 1.3 Ghz Pentium running Squeak, Comanche,
>>> and Seaside can still overdrive a relatively fast DSL internet pipe.
>>>
>>> The pipe to the internet is usually the bottleneck.
>>
>>
>>
>> I've been doing some benchmarking. One thing that helped a lot for
>> static pages was terminating the UI process (Project uiProcess
>> terminate). Note that this will (obviously) make your image
>> unresponsive to the mouse and keyboard, but CPU usage goes down and
>> web performance goes up. I was able to get over 300 requests per
>> second with a simple static page and Comanche on a 1Ghz G4
>> Powerbook. I'd recommend doing this before deploying an image
>> (although maybe there's a more reversible way of getting the same
>> effect?).
>
>
> Well, as I told you, I discovered the same thing at work when I
> suspended the process. Am I incorrect in thinking that is more
> reversible? I still think it must be possible, somehow, to achieve
> the same results by having the UI process NOOP most of what it's doing
> when the VM is using the null display driver or something, but I admit
> I haven't given it much detailed thought...
>
> Julian
Here's an idea I got from Andreas...you can service requests in the UI
process (run it in a workspace)...you can interrupt it by doing Alt-.
Here's an example of how you can do that with Comanche (this assumes you
have a comanche service called httpd and that it is stopped (or at least
not running on 8080)):
| httpService listener |
httpService := (Service serviceNamed: 'httpd').
listener := TcpListener on: 8080 handler: [ :socket | httpService value:
socket ].
listener listenWhile: [true].
Running this in a workspace will prevent any morphic stuff from running
(until you interrupt it by pressing Atl-.).
- Stephen
More information about the Seaside
mailing list