Durante algunos días he buscado una solución funcional a 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 manejo en el directorio es inferior a 10240. Aún más extraño, sigo recibiendo el mismo error después de aumentar la cantidad de descriptores de archivo .
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 aproximadamente 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. Luego 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? Cuales son tus experiencias