La compilación de producción de mi aplicación de reacción se ejecuta en un servidor de Windows 2019, con Intel Xeon 6204R CPU de 4 núcleos y 16 Gb de RAM. La aplicación funciona bien, pero si más de 20 usuarios usan la aplicación al mismo tiempo, se bloquea con un error:
Error: EMFILE: demasiados archivos abiertos, abra 'C:\ess\build\index.html'
Imagen de error que recibo mientras la compilación de reacción falla.
No puedo entender si este error se debe a alguna limitación de nodo o si en Windows tengo que cambiar alguna configuración o si mi código de reacción no está optimizado o abre archivos innecesarios.
correcciones que he intentado-
1- creó un servidor de nodo propio para servir la compilación de reacción en lugar del paquete de servicio.
2- Monkey parcheando el módulo fs del nodo js con el módulo graceful-fs.
3- Intenté agregar el vigilante que aún no funciona.
Monkey-Patching que he hecho en mi archivo server.js-
const fs = require('fs') const gracefulFs = require('graceful-fs') gracefulFs.gracefulify(fs);Traté de probarlo con otros ejemplos de código.
Monkey-parcheo para fs.readFile funciona bien.
for (x = 0; x < 10000; x++) { fs.readFile('testfiles/' + x, 'utf8', (err, data) => { data && console.log('reading file', data); err && console.log(err?.toString()); }) }pero para fs.open sigue recibiendo el mismo error después de 8188 archivos.
for (x = 0; x < 10000; x++) { fs.open('testfiles/' + x, 'rs+', function(err, fd) { fd && console.log('reading file', fd); if(err && i==0){ console.log('here', err?.toString()); i++; } }); }Error: EMFILE: demasiados archivos abiertos, abra 'C:\ess\testfiles\8189'
También traté de encontrar una alternativa ulimit de Linux en Windows, pero aún no puedo encontrarla.