Optimizing sockets to 1000 requests/sec? (Was: Sockets and messaging services)
junkster at rochester.rr.com
Thu Nov 15 12:09:51 CET 2001
In article <97ae44ee.0111142345.5679aca4 at posting.google.com>,
shriek at gmx.co.uk (Stephen) wrote:
> > >> I've been trying to benchmark socket server and can't seem to get it
> > >> past serving 200 requests per second.
> > > [snip]
> > >
> > > Thread-per-request servers can't scale up too high (although it might
> > > be interesting to see what stackless + microthreads would do). You'll
> > > need to use the asynchronous I/O support (see the select module for
> > > lower level stuff, asyncore/asynchat for slightly higher stuff).
> > About 3 years ago, I wrote a Python message-slinger as a drop-in
> > replacement
> > for my client's C code. It did around 600 msgs / sec (vs <200 / sec for the
> > client's code). That was Python 1.4 on 3 year old hardware.
> Thanks for the example, Gordon. Gives me the confidence knowing that
> "it is possible" ~ now I just have to work out how. It's very
> reassuring, rather than having doubts and asking myself "should I
> be doing this directly in C/Java instead?" whenever I hit a problem.
> > So 1000 / sec is quite possible, but you'll never get there with blocking
> > sockets.
> Even if they're threaded ?
Please keep in mind this might be a OS issue.
For example, if your using Windows NT _Client_ (maybe Win 2000 & Win XP
as well), that you are limited to 10 concurrent connections at anyone
I didn't see anywhere where you discussed your setup, so if your threads
are taking any significant time, or if you are not closing your threads
fast enough, you maybe running into a OS imposed limitation.
More information about the Python-list