[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