[Haskell-cafe] code review? store server, 220loc.
Duncan Coutts
duncan.coutts at worc.ox.ac.uk
Sun Aug 3 07:43:07 EDT 2008
On Sat, 2008-08-02 at 19:13 -1000, Tim Newsham wrote:
> My measurements show that a simple dummy server (accept, forkio,
> recv byte) handles roughly 7500 requests/connects per second,
> the server/client that do real messages do about 4500 req and
> connections per second. If all requests are on the same connection
> one after another it does about 13500 requests/second. For
> comparisons, a C ping-pong server does about 3600/second if
> it has to fork for each new connection/request, and about 35000/sec
> if its all on the same connection. So it seems at least competitive
> with a forking C server. I havent tested threaded C servers.
What kind of performance do you actually need? Can your network
connection actually sustain the bandwidth of your synthetic benchmarks?
For reference, I've got a demo HAppS-based server which handles
reasonably high load pretty well I think:
(tested using apache-bench, loopback interface, amd64 @ 2.2GHz)
With cached content 450k:
with 1 concurrent client:
760 requests per second
~1ms latency
34Mb/s
with 100 concurrent clients:
1040 requests per second
~90ms latency
46Mb/s
on a non-cached generated-on-demand 3k page:
with 1 concurrent client:
280 requests per second
~4ms latency
900Kb/s bandwidth
with 100 concurrent clients:
240 requests per second
~400ms latency
750Kb/s bandwidth
Using http keep-alive boots requests per sec by ~20%
Obviously this is testing with a loopback network. My point is, it's
serving at a rather higher rate than most real network connections I
could buy (except local ethernet networks).
Duncan
More information about the Haskell-Cafe
mailing list