Странное поведение с NodeJS и тестом Apache
Я тестирую nodejs (0.8.11).
со следующим приложением сервера:
var http = require('http');
http.createServer(function (req, res) {
console.log('hit!');
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
Я запустил Apache Benchmark:
ab -r -v 4 'http://127.0.0.1:1337/'
Я получаю следующий вывод:
hit!
hit!
hit!
hit!
hit!
hit!
hit!
hit!
hit!
... (alot more)
вывод из ab:
Benchmarking 127.0.0.1 (be patient)...INFO: POST header ==
---
GET / HTTP/1.0
Host: 127.0.0.1:1337
User-Agent: ApacheBench/2.3
Accept: */*
---
LOG: header received:
HTTP/1.1 200 OK
Content-Type: text/plain
Date: Thu, 11 Oct 2012 06:40:04 GMT
Connection: close
Hello World
LOG: Response code = 200
..done
Server Software:
Server Hostname: 127.0.0.1
Server Port: 1337
Document Path: /
Document Length: 12 bytes
Concurrency Level: 1
Time taken for tests: 0.009 seconds
Complete requests: 1
Failed requests: 0
Write errors: 0
Total transferred: 113 bytes
HTML transferred: 12 bytes
Requests per second: 115.05 [#/sec] (mean)
Time per request: 8.692 [ms] (mean)
Time per request: 8.692 [ms] (mean, across all concurrent requests)
Transfer rate: 12.70 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 8 8 0.0 8 8
Processing: 0 0 0.0 0 0
Waiting: 0 0 0.0 0 0
Total: 9 9 0.0 9 9
и думая, что количество запросов по умолчанию не равно 1, как указано в руководстве ab, я попытался:
ab -v 4 -n 1 -c 1 'http://127.0.0.1:1337/'
Я получаю тот же вывод (много "хитов!" В журнале)
Что здесь происходит?
Это относится к узлу, я пробовал то же самое с моим приложением ab -c 1 -n 1
, был только 1 зарегистрированный хит...
ПРИМЕЧАНИЕ: я пробовал с керлингом службы узла - только 1 'хит!' в журнале...
2 ответа
Я также разместил это в google group nodejs. Видимо, это ошибка в MacOSX Lion версии Apache / AB.
Оригинальный ответ от группы nodejs:
https://groups.google.com/d/msg/nodejs/OqVZ4zPbqp0/DitO9xkmFOUJ
Также здесь есть прямая ссылка на соответствующую страницу с описанием проблемы.
Что здесь происходит?
Каждый "хит" - это новое соединение. Почему это выглядит неправильно с вашей точки зрения?