Knoten und Fehler: EMFILE, zu viele offene Dateien

Für einige Tage suchte ich nach einer funktionierenden Lösung um einen Fehler

Error: EMFILE, too many open files

Es scheint, dass viele Leute das gleiche problem haben. Die übliche Antwort umfasst die Erhöhung der Anzahl der Datei-Deskriptoren. So, ich hab das versucht:

sysctl -w kern.maxfiles=20480

Der Standardwert ist 10.240. Dies ist ein wenig seltsam, in meinen Augen, weil die Anzahl der Dateien, die ich bin-handling in das Verzeichnis ist unter 10240. Noch seltsamer, ich habe immer noch die gleiche Fehlermeldung erhalten, nachdem ich erhöht habe sich die Anzahl von Datei-Deskriptoren.

Zweite Frage:

Nach einigen Recherchen fand ich eine Arbeit, um für die "too many open files" problem:

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

Leider habe ich noch immer erhalten die gleichen Fehler.
Was ist falsch an diesem code?

Eine Letzte Frage (ich bin neu in der javascript-und node), ich bin in den Prozess der Erstellung einer web -
Anwendung mit einer Menge von Anforderungen für über 5000 Benutzer pro Tag. Ich habe viele Jahre Erfahrung in der
Programmierung mit anderen Sprachen wie python und java. also ursprünglich dachte ich developp diese Anwendung mit django oder play framework. Dann entdeckte ich Knoten und ich muss sagen, dass die Idee der nicht blockierenden I/O Modell ist wirklich schön, verführerisch und vor allem sehr schnell!

Aber welche Probleme sollte ich erwarten, mit Knoten? Ist es eine Produktion bewährten web-server? Was sind Eure Erfahrungen?

InformationsquelleAutor der Frage xaverras | 2012-01-22

Schreibe einen Kommentar