Много запросов к eventmachine - PullRequest
0 голосов
/ 26 декабря 2011

Я использую eventmachine для создания большого количества http-запросов. Http-сервер может выполнять эти подключения. Но периодически вызывается 5-7 ошибок на 100 запросов. Почему это может быть?

require 'rubygems'
require 'eventmachine'
require 'em-http'
urls = []
100.times do 
  urls << 'http://127.0.0.1/'
end
if urls.size < 1
  puts "Usage: #{$0} <url> <url> <...>"
  exit
end

pending = urls.size

EM.run do
  urls.each do |url|
    http = EM::HttpRequest.new(url).get
    http.callback do
     puts "#{url}\n#{http.response_header.status} - #{http.response.length} bytes\n"
     pending -= 1
     EM.stop if pending < 1
    end
    http.errback do
      puts "E::#{url}\n" + http.error.to_s
      pending -= 1
      EM.stop if pending < 1
    end
  end
end
}

1 Ответ

0 голосов
/ 28 декабря 2011

Сколько запросов может обработать ваш localhost?Вы отправляете 100 одновременных запросов на 127.0.0.1, может ли он обработать 100 одновременных запросов?В противном случае запросы будут поставлены в очередь и, возможно, истекут в EM :: HttpRequest.

Время ожидания подключения по умолчанию EM :: HttpRequest составляет 5 секунд, а время ожидания неактивности по умолчанию - 10 секунд.

Попробуйте запустить ab на вашем локальном хосте и посмотрите, сколько запросов он может обработать в секунду.

...