Можно создать дубликат:
'ab' program freezes after lots of requests, why?Почему простой тонкий сервер перестает отвечать на 16500 запросов при бенчмаркинге?
Вот простой тестовый сервер:
require 'rubygems'
require 'rack'
require 'thin'
class HelloWorld
def call(env)
[200, {"Content-Type" => "text/plain"}, "OK"]
end
end
Rack::Handler::Thin.run HelloWorld.new, :Port => 9294
#I've tried with these added too, 'rack.multithread' => true, 'rack.multiprocess' => true
Вот тестовый запуск:
$ ab -n 20000 http://0.0.0.0:9294/sdf
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 0.0.0.0 (be patient)
Completed 2000 requests
Completed 4000 requests
Completed 6000 requests
Completed 8000 requests
Completed 10000 requests
Completed 12000 requests
Completed 14000 requests
Completed 16000 requests
apr_poll: The timeout specified has expired (70007)
Total of 16347 requests completed
Это ломается примерно в 16500 году. Почему? Как я могу узнать, что происходит. Это GC в рубине или это что-то с количеством доступных сетевых сокетов на компьютере OS X. У меня есть память MPB 2.5 Ghz 6G.
Редактировать
После некоторого обсуждения здесь и тестирования различных вещей, похоже, меняется net.inet.tcp.msl от 15000 до 1000 мс делает задачу проверки высокочастотных веб-серверов с аб уходят.
sudo sysctl -w net.inet.tcp.msl=1000 # this is only good for local development
См. Связанный вопрос с ответом на эту проблему. 'ab' program freezes after lots of requests, why?
ли вы найти причину ?? Потенциальное объяснение может заключаться в том, что ОС держит сокет в «недавно использованном» состоянии и не использует его повторно в течение нескольких минут. По-видимому, можно переконфигурировать IP-уровень ОС, чтобы этого не сделать. – radiospiel
Если это помогает, я могу воспроизвести это точное поведение на моем MBP. Завершено 16359 запросов. Не знаю, что вызывает его. –
Хм, думая вслух, это число подозрительно близко к 16384 ... –