[hunchentoot-devel] re: thread pool benchmark results
Nick Allen
rflug05 at gmail.com
Mon Aug 11 12:56:15 UTC 2008
on Friday, July 18, 2008, 7:34:27 AM Hans wrote:
> On Fri, Jul 18, 2008 at 03:00, Anton Vodonosov <avodonosov at yandex.ru> wrote:
>> I have set up a little benchmark to test ithow
>> thread pool may improve the hunchentoot performance.
>>
>> In two words it looks useful. Details are below.
> [...]
>> Patch for port-sbcl.lisp with the simple thread pool
>> implementation is also attached. It is against 0.15.7,
>> sorry it's not for the current development version of
>> hunchentoot, but I created this thead pool code about
>> half a year ago.
> I think we would accept performance patches to the development
> version. The revised connection management should make it easier to
> integrate thread pooling in a portable fashion.
I used pcall
http://marijn.haverbeke.nl/pcall/
to make a portable thread-pool-powered connection manager (note: I
don't have lispworks and I have no idea if pcall and lispworks work
together since it uses bordeaux threads)
darcs get http://common-lisp.net/project/bpm/darcs/pcall-connection-manager
I think once the cl.net darcsweb script it might be browsable on the web at
http://common-lisp.net/cgi-bin/darcsweb/darcsweb.cgi?r=bpm-pcall-connection-manager;a=summary
but I'm not 100% positive and I don't know how long it will take for
it to be visible...
note: in order to use it you have to add &ALLOW-OTHER-KEYS to the end
of the parameters to HUNCHENTOOT:START-SERVER so it will accept the
:CONNECTION-MANAGER-CLASS keyword arg
anyways I tried to benchmark it against the
one-thread-per-connection-manager on my laptop using siege. I used
both the default dispatcher (the default hunchentoot landing page) and
a dispatcher that returned a handler that slept for 3 seconds and
returned a page
(defun wait-for-3-seconds (hunchentoot:*request*)
(lambda () (sleep 3) "this is the page"))
with 3-5 threads in the pool the 1-thread-per-connection manager
performed a lot better with both dispatchers. with 20-50 threads both
connections managers had about the same performance with the
1-thread-per-connection manager being slightly faster.
I'm sure there are better ways to benchmark it, but I'm not in a
position to be playing with our server at the moment. I haven't taken
a look at Anton's tests yet.
Nick
More information about the Tbnl-devel
mailing list