How to write a multithreaded web server?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

How to write a multithreaded web server?

Stefan Matthias Aust
Hi!

I wonder whether you can write a faster webserver in Dolphin Smalltalk
than the ThinkTank example. That one works but is very slow. I can watch
my browser (IE6) while it loads all pictures after it displayed the main
web page. Serving the same pages via a bare simple threaded Java server
(use a ServerSocket to accept calls, then spawn a new thread to handle
the request and also wait again) is much faster. It looks like Dolphin
is unable to parallelize the request processing. I tried to add a "[]
fork" at the IMHO right places but failed.

So my question is, is the ThinkTank server just not tuned for
performance or is this a general problem with the Dolphin Sockets?  Or
to rephrase it: How to write a multithreaded server in Dolphin?

Thanks,
bye
--
Stefan Matthias Aust  //  Truth Until Paradox


Reply | Threaded
Open this post in threaded view
|

Re: How to write a multithreaded web server?

Stefan Matthias Aust
I asked:

> I wonder whether you can write a faster webserver in Dolphin Smalltalk
> than the ThinkTank example. That one works but is very slow.

Well, I'm afraid I messed up my benchmarks. Java isn't faster than Dolphin.
My benchmark transfers 1.6MB in 55 files. Both Smalltalk and Java need some
4 seconds to serve these files locally and 3 seconds if the browser runs on
another computer (the server runs on a PII400 with W2KSP2 and .NET
installed).  I'm still curious what's the best way to construct a web
server. An idea to improve speed is perhaps to support the "keep alive"
option of HTTP/1.1 but that's all I can come up with.

bye
--
Stefan Matthias Aust  //  Truth Until Paradox


Reply | Threaded
Open this post in threaded view
|

Re: How to write a multithreaded web server?

Blair McGlashan
"Stefan Matthias Aust" <[hidden email]> wrote in message
news:9rpr6r$u0p$00$[hidden email]...
> I asked:
>
> > I wonder whether you can write a faster webserver in Dolphin Smalltalk
> > than the ThinkTank example. That one works but is very slow.
>
> Well, I'm afraid I messed up my benchmarks. Java isn't faster than
Dolphin.
> My benchmark transfers 1.6MB in 55 files. Both Smalltalk and Java need
some
> 4 seconds to serve these files locally and 3 seconds if the browser runs
on
> another computer (the server runs on a PII400 with W2KSP2 and .NET
> installed).  I'm still curious what's the best way to construct a web
> server. An idea to improve speed is perhaps to support the "keep alive"
> option of HTTP/1.1 but that's all I can come up with.

Have you tried the Dolphin port of the Camp Smalltalk Swazoo web application
server? A useful link is:

http://www.chartexplorer.com/dolphin/SWSpray/spraycode.html

I don't know the authoratitive source for Dolphin Swazoo, but the Spray
download contains it.

Perhaps Jerry (Bell) and/or Steve (Waring) could comment further.

Regards

Blair


Reply | Threaded
Open this post in threaded view
|

Re: How to write a multithreaded web server?

Steve Waring-2
Hi Stefan,

Swazoo uses a ServerSocket listening in one process, and forks each new
connection in a separate process. HTTP1.1 persistent connections are
supported, and all HTTP Messages from a single connection are handled in the
same process.

I have just started a new Swazoo wiki at;
http://www.dolphinharbor.org:8080/SwazooDocumentation

The wiki contains links to the download pages.

For your benchmarking, you may be interested in looking at OpenSTA. It is an
open source web server load tester at;
http://www.opensta.org/

The version I have works well, and is very effective in testing a server
under a variety of load conditions. If you add Swazoo into your testing mix,
I would be interested in hearing how it performs.

Thanks,
Steve
www.dolphinharbor.org


Reply | Threaded
Open this post in threaded view
|

Re: How to write a multithreaded web server?

Stefan Matthias Aust
Steve,

"Steve Waring" <[hidden email]> schrieb im Newsbeitrag
news:9rrnus$vh27p$[hidden email]...
> Hi Stefan,
>
> Swazoo uses a ServerSocket listening in one process, and forks each new
> connection in a separate process. HTTP1.1 persistent connections are
> supported, and all HTTP Messages from a single connection are handled in
the
> same process.

That sounds good. While I was aware of the dolphinharbor website I didn't
realized that Spray contains a web server. I thought it was some
SOAP/Webservice only thing. Actually, the web pages make it a little bit
difficult IMHO to understand what your project is all about.

BTW, do you plan to host your side on a Dolphin based system in future? :-)

> For your benchmarking, you may be interested in looking at OpenSTA. It is
an
> open source web server load tester at;
> http://www.opensta.org/
>
> The version I have works well, and is very effective in testing a server
> under a variety of load conditions. If you add Swazoo into your testing
mix,
> I would be interested in hearing how it performs.

Thanks for the pointer. If I generate some benchmarks, I'll publish the
results.


bye
--
Stefan Matthias Aust  //  Truth Until Paradox


Reply | Threaded
Open this post in threaded view
|

Re: How to write a multithreaded web server?

Jerry Bell
> That sounds good. While I was aware of the dolphinharbor website I didn't
> realized that Spray contains a web server. I thought it was some
> SOAP/Webservice only thing. Actually, the web pages make it a little bit
> difficult IMHO to understand what your project is all about.
>

We've never claimed to be good communicators!

DolphinHarbor is just a place for Dolphin folks to come and play.  So far
most of the 'play' has been centered around Steve Waring's very excellent
Spray project, which is a nifty web services package (ie SOAP client and
server implementation in Dolphin).  Spray runs on top of Swazoo, which is
the Camp Smalltalk web application server I ported to Dolphin a while back.
Other projects are always welcome!  We'd set up a listserv for the site, but
so far only two of us are active and it's been simpler to just email back
and forth.  But if there is interest we'd be happy to set up such a list.

> BTW, do you plan to host your side on a Dolphin based system in future?
:-)
>

We are using a Squeak-based swiki for the docs, but everything else on the
site is running in Dolphin.   That includes the port 80 website itself,
along with 25+ test web services that are deployed and in use on a daily
basis by various groups involved in SOAP interop testing.  Steve has done a
great job on Spray and it performs very well in those tests- you can see the
results on the site.

We'd love to see a Dolphin-based wiki built on top of Swazoo, but we just
haven't had the time.  We'd eject the Swiki in a heartbeat if such a beastie
existed, if only for the sheer niftyness of running a pure Dolphin website.
Any volunteers? :)

Please let me know if I can answer any more questions!

Jerry Bell
[hidden email]


> > For your benchmarking, you may be interested in looking at OpenSTA. It
is

> an
> > open source web server load tester at;
> > http://www.opensta.org/
> >
> > The version I have works well, and is very effective in testing a server
> > under a variety of load conditions. If you add Swazoo into your testing
> mix,
> > I would be interested in hearing how it performs.
>
> Thanks for the pointer. If I generate some benchmarks, I'll publish the
> results.
>
>
> bye
> --
> Stefan Matthias Aust  //  Truth Until Paradox
>
>


Reply | Threaded
Open this post in threaded view
|

Re: How to write a multithreaded web server?

Steve Waring-2
In reply to this post by Stefan Matthias Aust
Hi Stefan,

> SOAP/Webservice only thing. Actually, the web pages make it a little bit
> difficult IMHO to understand what your project is all about.

Thanks for the feedback! I have uploaded a page to;
http://www.dolphinharbor.org/qad/welcome/about.html

Does this help? I am working on the documentation at the moment, so any
questions are very welcome.

> BTW, do you plan to host your side on a Dolphin based system in future?
:-)

I have just read Jerrys reply (the check is in the mail :), and I think
Swiki is great! Besides an annoying, but rare Windows only bug which results
in Dolphin/Swazoo getting no cycles,  it does everything I need.

Thanks,
Steve
www.dolphinharbor.org