2012-05-04 2 views
1

Воспроизведение и пытаясь увидеть, как быстро node.js может служить статический файл с диска, используя апачский скамейкаNode.js апач стендовое испытание

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 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); 

ответ

1

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

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

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

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

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

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

+0

спасибо за это :) – portoalet

Смежные вопросы