узел и ошибка: EMFILE, слишком много открытых файлов

В течение нескольких дней я искал рабочее решение ошибки

Error: EMFILE, too many open files

Кажется, что у многих людей есть та же самая проблема. Обычный ответ включает в себя увеличение количества файловых дескрипторов. Итак, я попробовал это:

sysctl -w kern.maxfiles=20480,

Значение по умолчанию - 10240. Это немного странно для меня, потому что количество файлов, которые я обрабатываю в каталог под 10240. Даже странно, я все еще получаю ту же ошибку после того, как я увеличил количество файловых дескрипторов.

Второй вопрос:

После нескольких поисков я нашел решение проблемы «слишком много открытых файлов»:

var requestBatches = {};
function batchingReadFile(filename, callback) {
  // First check to see if there is already a batch
  if (requestBatches.hasOwnProperty(filename)) {
    requestBatches[filename].push(callback);
    return;
  }

  // Otherwise start a new one and make a real request
  var batch = requestBatches[filename] = [callback];
  FS.readFile(filename, onRealRead);

  // Flush out the batch on complete
  function onRealRead() {
    delete requestBatches[filename];
    for (var i = 0, l = batch.length; i < l; i++) {
      batch[i].apply(null, arguments);
    }
  }
}

function printFile(file){
    console.log(file);
}

dir = "/Users/xaver/Downloads/xaver/xxx/xxx/"

var files = fs.readdirSync(dir);

for (i in files){
    filename = dir + files[i];
    console.log(filename);
    batchingReadFile(filename, printFile);

К сожалению, я все еще получаю ту же ошибку. Что не так с этим кодом?

Последний вопрос (я новичок в javascript и нодах), я нахожусь в процессе разработки веб-приложения с большим количеством запросов для примерно 5000 пользователей в день. У меня многолетний опыт программирования на других языках, таких как Python и Java. поэтому первоначально я подумал о разработке этого приложения с Django или Play Framework. Затем я обнаружил узел и должен сказать, что идея неблокирующей модели ввода / вывода действительно хороша, соблазнительна и, скорее всего, очень быстра!

Но каких проблем мне ожидать с узлом? Это проверенный производственный веб-сервер? Каковы ваши переживания?

147
задан Jeff LaFay 23 January 2012 в 05:05
поделиться