Depuis quelques jours, je cherche une solution fonctionnelle à une erreur
Error: EMFILE, too many open files
Il semble que de nombreuses personnes aient le même problème. La réponse habituelle consiste à augmenter le nombre de descripteurs de fichiers. Alors, j'ai essayé ceci:
sysctl -w kern.maxfiles=20480
,
La valeur par défaut est 10240. C'est un peu étrange à mes yeux, car le nombre de fichiers que je gère dans le répertoire est inférieur à 10240. Encore plus étrange, je reçois toujours la même erreur après avoir augmenté le nombre de descripteurs de fichiers .
Deuxième question:
Après un certain nombre de recherches, j'ai trouvé un moyen de contourner le problème "trop de fichiers ouverts":
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);
Malheureusement, je reçois toujours la même erreur. Quel est le problème avec ce code?
Une dernière question (je suis nouveau dans javascript et node), je suis en train de développer une application web avec beaucoup de requêtes pour environ 5000 utilisateurs quotidiens. J'ai de nombreuses années d'expérience en programmation avec d'autres langages comme python et java. donc à l'origine j'ai pensé développer cette application avec django ou play framework. Puis j'ai découvert node et je dois dire que l'idée de modèle d'E / S non bloquant est vraiment sympa, séduisante, et surtout très rapide!
Mais à quel genre de problèmes dois-je m'attendre avec node? S'agit-il d'un serveur Web éprouvé en production? Quelles sont vos expériences?