Pour quelques jours, j'ai cherché une solution de travail à une erreur
Error: EMFILE, too many open files
Il semble que beaucoup de gens ont le même problème. La réponse habituelle consiste à augmenter le nombre de descripteurs de fichiers. Donc, j'ai essayé ceci:
sysctl -w kern.maxfiles=20480
,
La valeur par défaut est 10240. C'est un peu étrange à mes yeux, parce que le nombre de fichiers que je suis de manutention dans le répertoire est sous 10240. Plus étrange encore, je continue de recevoir le même message d'erreur après j'ai augmenté le nombre de descripteurs de fichiers.
Deuxième question:
Après plusieurs recherches j'ai trouvé un travail pour le "trop de fichiers ouverts" problème:
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, j'ai encore recevoir le même message d'erreur. Quel est le problème avec ce code?
Une dernière question (je suis nouveau sur le javascript et le nœud), je suis en train de développer un site web application avec beaucoup de demandes pour environ 5000 utilisateurs quotidiens. J'ai de nombreuses années d'expérience dans programmation avec d'autres langages comme python et java. donc, au départ, je pensais à développer cette application avec django ou jouer au cadre. Puis j'ai découvert nœud et je dois dire que l'idée de la non-blocage I/O modèle est vraiment beau, séduisant, et surtout très rapide!
Mais ce genre de problèmes qui dois-je m'attendre avec noeud? Est-ce une production prouvé serveur web? Quelles sont vos expériences?