From: Robert Klemme Date: 2006-06-03T03:33:27+09:00 Subject: Re: WEBrick on Windows 2006/6/2, Alex Young : > Hi all, > > I'm trying to benchmark a few HTTP server types on Windows (XP Home, > specifically - don't ask why), and I've hit a snag with this code: > > ------------------------------ > > require 'xmlrpc/server' > require 'xmlrpc/client' > require 'benchmark' > > class ServerObject < XMLRPC::Server > def initialize > super(8080) > @server.config[:AccessLog] = [['', '']] > self.add_handler('benchmark.simple') do > test() > end > end > def test > 'test' > end > end > > test_obj = ServerObject.new > serving_thread = Thread.new{ test_obj.serve } > > client = XMLRPC::Client.new('127.0.0.1', '/', '8080') > > n = 2000 > Benchmark.bmbm(20) do |b| > b.report('Direct RPC') { for i in 1..n; > client.call('benchmark.simple'); end } > end > > ------------------------- > > The problem is that with n that high, I get an > > c:/ruby/lib/ruby/1.8/net/http.rb:562:in `initialize': Bad file > descriptor - connect(2) (Errno::EBADF) > from c:/ruby/lib/ruby/1.8/net/http.rb:562:in `connect' > ... > from c:/ruby/lib/ruby/1.8/xmlrpc/client.rb:535:in `do_rpc' > > error during the second round. Looking at netstat -a afterwards, I see > almost every local port in the range 1026-5000 in the TIME_WAIT state. > That's a suspiciously round number, and I suspect there's a > 'client_port_max=5000' setting somewhere. That's not what bothers me. > Why are these ports waiting, and how can I close them, or reduce their > timeout value? I'd rather not insert 30 second waits all over the place > if that's enough of a delay... > > Any tips? Moving to a different OS is not, unfortunately, an option, > although shifting up to XP Pro might be in a pinch. I guess you were bitten by a limitation in the network handling of your version of Windows. Only server operating systems are allowed a high number of incoming connections. I don't know whether there is a tweak that will fix this but if not you will have to change OS or the algorithm (doing sleeps in between for example). Btw, why did you choose this subject? Kind regards robert -- Have a look: http://www.flickr.com/photos/fussel-foto/