Apachebench на сервере node.js возвращает "apr_poll: истекло указанное время ожидания (70007)" после ~30 запросов
Я только начал работать с node.js и проводил экспериментальное нагрузочное тестирование с ab, которое возвращает примерно 30 запросов или около того.
Я нашел другие страницы, показывающие намного лучшие числа параллелизма, чем я, такие как: http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php
Существуют ли какие-то критические параметры конфигурации сервера, которые необходимо выполнить для достижения этих показателей?
Я наблюдал за памятью сверху и все еще вижу приличный объем свободной памяти во время работы ab, также смотрел mongostat и не вижу ничего подозрительного.
Команда, которую я выполняю, и ошибка:
ab -k -n 100 -c 10 postrockandbeyond.com/
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking postrockandbeyond.com (be patient)...apr_poll: The timeout specified has expired (70007)
Total of 32 requests completed
Есть ли у кого-нибудь предложения о том, что я должен рассмотреть, что может быть причиной этого? Я запускаю его на OSX LION, но также выполнил ту же команду на сервере с теми же результатами.
РЕДАКТИРОВАТЬ: я в конце концов решил эту проблему. Я использовал TTAPI, который подключался к turntable.fm через веб-сокеты. На главной странице я подключался по каждому запросу. Так что происходило то, что после определенного количества соединений все распадалось. Если вы столкнулись с той же проблемой, проверьте, обращаетесь ли вы к внешним службам каждый запрос.
1 ответ
Согласно этому сообщению в блоге, это потому что Apache Bench делает HTTP/1.0
запросы, которые заставляют узел закрывать соединение, начиная с узла 0.6+.
Я не уверен почему; это похоже на ошибку узла.
В любом случае, короткий ответ - использовать что-то еще. Я использую httperf, который в любом случае кажется лучше.