lado - node.js: posible pérdida de memoria del servidor http
node js pdf 2018 (1)
Versión de Nodejs: 0.8.8
Aquí está el servidor:
var http = require(''http'');
var port = 1338;
var ip = "127.0.0.1";
http.createServer(function (req, res) {
res.writeHead(200, {''Content-Type'': ''text/plain''});
res.end(''Hi there/n'');
}).listen(port, ip);
El cliente (script php) curza una solicitud posterior al servidor anterior. POST es una cadena (json), de aproximadamente 4 megabytes de tamaño.
Como puede ver, el servidor no hace nada con los datos publicados. Para depurar, eliminé todo mi código y volví al ejemplo de Hello World que no hace nada :)
Cuando eché un vistazo al uso de la memoria del proceso de nodo (hecho en Activity Monitor, aplicación mac), informa que el uso de la memoria del servidor de nodo se está haciendo más grande para cada solicitud.
Entonces, después de 20 solicitudes o más, el uso de la memoria se duplica.
Esto no es un error. Es un comportamiento normal y esperado.
Node.js se basa en JavaScript, que es un lenguaje recogido de basura. En resumen, lo que sucede es que la memoria no se libera de inmediato, sino que tardará un tiempo hasta que se libere la memoria (p. Ej., Se recoge la basura). V8 (que utiliza el nodo) en realidad tiene un recolector de basura muy inteligente que "asegura la asignación rápida de objetos, pausas cortas de recolección de basura y sin fragmentación de memoria".
Para demostrar este comportamiento por usted, ejecuté la secuencia de comandos anterior con node.js 0.8.8 en Windows y bombardeé el servidor con grandes solicitudes HTTP POST.
Process Explorer revela el siguiente gráfico de uso de memoria:
Como puede ver, el uso de la memoria aumenta, hasta cierto límite que desencadena la recolección de basura. Después de la limpieza, el uso se restablece y comienza a subir nuevamente hasta el próximo disparo.