Pregunta Node.js tiene un máximo de 1000 conexiones simultáneas


Estamos evaluando el desempeño de los nodos utilizando un servidor simple de Hello World en AWS (EC2).

Independientemente del tamaño de instancia que usemos, Node siempre aparece al máximo en 1000 conexiones simultáneas (esto NO es 1000 por segundo, pero 1000 lo puede manejar al mismo tiempo). Poco después, la CPU se dispara y el nodo básicamente se congela.

Nodo v0.10.5

var http = require('http');
var server = http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('loaderio-dec86f35bc8ba1b9b604db6c328864c1');
});
server.maxHeadersCount = 0;
server.listen(4000);

Nodo debería ser capaz de manejar más de esto correctamente? Cualquier pensamiento sería muy apreciado.

También los descriptores de archivos (soft, hard, system) están configurados en 65096)


32
2018-06-10 22:07


origen


Respuestas:


Utilizar el posix módulo para aumentar el límite en la cantidad de descriptores de archivos que su proceso puede usar.

Instalar posix

npm install posix

Luego, en tu código que se ejecuta cuando inicias tu aplicación ...

var posix = require('posix');

// raise maximum number of open file descriptors to 10k,
// hard limit is left unchanged
posix.setrlimit('nofile', { soft: 10000 });

29
2018-06-10 22:19



Ha alcanzado el límite predeterminado de descriptores de archivos que un proceso puede usar (1024). Puede verificar el límite en la línea de comando ejecutando "ulimit -n". Para cambiar el límite, debe editar /etc/security/limits.conf. Agregue el siguiente bloque:

* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535

"*" se aplica a todos los usuarios excepto a la raíz. Los límites para la raíz se deben agregar por separado. Hay un límite suave y duro. Los usuarios pueden cambiar sus propios límites hasta el límite suave pero sin exceder el límite estricto.

Una vez que el archivo ha sido editado, cierre la sesión y vuelva a iniciarla. Verifica el cambio ejecutando ulimit -n. Reinicie su proceso Node y debería estar listo para continuar.

También hay un límite de descriptor de archivo para todo el sistema que se puede aumentar con el siguiente comando:

sysctl -w fs.file-max=65535

10
2018-06-11 04:18