Looking at different web stacks (ruby mostly), and seeing if/how they work in parallel.
run Plel.new /typo:code
typo:code Concurrency Level: 2 Time taken for tests: 1.006 seconds Complete requests: 2 Failed requests: 0 Write errors: 0 Total transferred: 364 bytes HTML transferred: 26 bytes Requests per second: 1.99 #/sec /typo:code
Two requests take one second. Apparrently Rack will process requests in parallel. How does rack do this?
config.ru
require 'paral' run Paral
paral.rb
require 'sinatra/base'
class Paral < Sinatra::Base get '/' do sleep 1 "Hi" end end
typo:code Concurrency Level: 2 Time taken for tests: 1.013 seconds Complete requests: 2 Failed requests: 0 Write errors: 0 Total transferred: 366 bytes HTML transferred: 4 bytes Requests per second: 1.97 #/sec /typo:code
Same result for a sinatra app in rack. Two requests, one second.
went back to the simplest of all webservers, straight webrick
typo:code require 'webrick'
class Paral < WEBrick::HTTPServlet::AbstractServlet
def do_GET(request, response) status, content_type, body = do_stuff_with(request)
response.status = status
response['Content-Type'] = content_type
response.body = body
end
def do_stuff_with(request) sleep 1 return 200, "text/plain", "Hello World" end
end
server = WEBrick::HTTPServer.new({:Port=>8081}) server.mount "/", Paral server.start
typo:code Concurrency Level: 2 Time taken for tests: 1.012 seconds Complete requests: 2 Failed requests: 0 Write errors: 0 Total transferred: 360 bytes HTML transferred: 22 bytes Requests per second: 1.98 #/sec
Still just one second. Whats going on with this?