Durante alguns dias, procurei uma solução funcional para um erro
Error: EMFILE, too many open files
Parece que muitas pessoas têm o mesmo problema. A resposta usual envolve aumentar o número de descritores de arquivos. Então, eu tentei isso:
sysctl -w kern.maxfiles=20480
,
O valor padrão é 10240. Isso é um pouco estranho aos meus olhos, porque o número de arquivos que estou manipulando no diretório está abaixo de 10240. Ainda mais estranho, ainda recebo o mesmo erro depois de aumentar o número de descritores de arquivos .
Segunda questão:
Após várias pesquisas, encontrei uma solução alternativa para o problema "muitos arquivos abertos":
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);
Infelizmente ainda recebo o mesmo erro. O que está errado neste código?
Uma última pergunta (eu sou novo no javascript e no nó), estou desenvolvendo um aplicativo da web com muitas solicitações para cerca de 5.000 usuários diários. Tenho muitos anos de experiência em programação com outras linguagens como python e java. então originalmente pensei em desenvolver esta aplicação com django ou play framework. Descobri o nó e devo dizer que a ideia de modelo de E / S sem bloqueio é realmente agradável, sedutora e, acima de tudo, muito rápida!
Mas que tipo de problemas devo esperar com o nó? É um servidor Web comprovado em produção? Quais são as suas experiências?