Seit einigen Tagen habe ich nach einer funktionierenden Lösung für einen Fehler gesucht
Error: EMFILE, too many open files
Es scheint, dass viele Menschen das gleiche Problem haben. Die übliche Antwort besteht darin, die Anzahl der Dateideskriptoren zu erhöhen. Also habe ich das versucht:
sysctl -w kern.maxfiles=20480
,
Der Standardwert ist 10240. Dies ist in meinen Augen etwas seltsam, da die Anzahl der Dateien, die ich im Verzeichnis verarbeite, unter 10240 liegt. Noch seltsamer ist, dass ich immer noch den gleichen Fehler erhalte, nachdem ich die Anzahl der Dateideskriptoren erhöht habe .
Zweite Frage:
Nach einer Reihe von Suchen habe ich eine Lösung für das Problem "zu viele offene Dateien" gefunden:
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 erhalte ich immer noch den gleichen Fehler. Was ist los mit diesem Code?
Eine letzte Frage (ich bin neu in Javascript und Node): Ich bin dabei, eine Webanwendung mit vielen Anfragen für etwa 5000 Benutzer pro Tag zu entwickeln. Ich habe langjährige Erfahrung in der Programmierung mit anderen Sprachen wie Python und Java. Ursprünglich dachte ich, diese Anwendung mit Django oder Play Framework zu entwickeln. Dann habe ich Node entdeckt und ich muss sagen, dass die Idee eines nicht blockierenden E / A-Modells wirklich nett, verführerisch und vor allem sehr schnell ist!
Aber welche Probleme sollte ich mit Node erwarten? Ist es ein produktionserprobter Webserver? Was sind deine Erfahrungen?