node and Error: EMFILE, demasiados archivos abiertos
Durante algunos días he buscado una solución que funcione para un error
Error: EMFILE, too many open files
Parece que muchas personas tienen el mismo problema. La respuesta habitual implica aumentar el número de descriptores de archivo. Entonces, he intentado esto:
sysctl -w kern.maxfiles=20480
,
El valor predeterminado es 10240. Esto es un poco extraño a mis ojos, porque la cantidad de archivos que estoy manejando en el directorio es menor a 10240. Aún más extraño, sigo recibiendo el mismo error después de aumentar la cantidad de archivos descriptores.
Segunda pregunta
Después de varias búsquedas, encontré una solución para el problema de "demasiados archivos abiertos":
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);
Lamentablemente, sigo recibiendo el mismo error. ¿Qué está mal con este código
Una última pregunta (soy nuevo en javascript y nodo), estoy en el proceso de desarrollar una aplicación web con muchas solicitudes para alrededor de 5000 usuarios diarios. Tengo muchos años de experiencia en programación con otros lenguajes como Python y Java. originalmente pensé en desarrollar esta aplicación con django o play framework. ¡Entonces descubrí el nodo y debo decir que la idea del modelo de E / S sin bloqueo es realmente agradable, seductora y, sobre todo, muy rápida!
¿Pero qué tipo de problemas debo esperar con el nodo? ¿Es un servidor web probado en producción? ¿Cuáles son tus experiencias?