Тестирование Node.js Apache на стенде

Играем и пытаемся увидеть, как быстро node.js может обслуживать статический файл с диска с помощью apache Bench

ab -r -n 10000 -c 1000 http://server:8080/loadtestfile.txt

У меня проблема с ulimit на Ubuntu 11.04 x64 VirtualBox VM на OSX Lion

(node) Hit max file limit. Increase "ulimit - n"

Я больше не могу увеличить лимит.

$ ulimit -n 1000000
$ limit -n 1100000
-su: ulimit: open files: cannot modify limit: Operation not permitted

Это правильный способ заставить node.js перезагружать файл с диска для обслуживания каждого HTTP-запроса? Как увеличить лимит выше 1000000?

Обычный запрос curl работает:

curl http://server:8080/loadtestfile.txt

Код

var sys = require('sys'),
http = require('http'),
fs = require('fs'),
index;

http.createServer(function(request, response) {

fs.readFile('./loadtestfile.txt', function (err, data) {

    response.writeHeader(200, {"Content-Type": "text/plain"});
    response.write(data);
    response.end();
 });

}).listen(8080);

person Lydon Ch    schedule 04.05.2012    source источник


Ответы (1)


В идеале ваше приложение должно работать в установленных для него пределах; он должен четко обрабатывать accept(2), возвращая состояние ошибки с errno(3), установленным в EMFILE или ENFILE, не пытаясь принять другое соединение, пока существующее соединение не прервется.

Однако исправление приложения для корректной обработки этого случая может быть затруднено; если вы просто хотите еще больше повысить свои лимиты, чтобы провести больше тестов, есть две возможности.

  • Отредактируйте /etc/security/limits.conf, чтобы увеличить жесткое ограничение для вашей учетной записи пользователя для ограничения nofile до гораздо большего, а затем снова войдите в свою учетную запись пользователя.

  • Проведите тестирование в корневой оболочке; вы можете либо войти как root напрямую, либо использовать sudo -s или su для запуска оболочки, а затем запустить оттуда команду ulimit -n.

Сложность заключается в том, что для повышения лимитов требуется административный доступ. (Когда у вас в системе одновременно несколько сотен пользователей, вы хотите, чтобы они играли хорошо...)

Тем не менее, я предполагаю, что ваше приложение также столкнется с общесистемным ограничением на максимальное количество открытых файлов; который настроен через /proc/sys/fs/file-max. Поднимите и этот предел, если приложение жалуется.

person sarnold    schedule 05.05.2012