tutorial programacin principiantes para node libro examples desde comandos cero performance node.js amazon-web-services

performance - programacin - Node.JS Tiempo de respuesta



node js tutorial pdf (2)

Lanzó Node.JS en una instancia de AWS y estaba probando los tiempos de solicitud, obtuvo algunos resultados interesantes.

Usé lo siguiente para el servidor:

var http = require(''http''); http.createServer(function(req, res) { res.writeHead(200, {''Content-Type'': ''text/html''}); res.write(''Hello World''); res.end(); }).listen(8080);

Tengo un retraso promedio de 90 ms en este servidor, pero la solicitud total demora ~ 350 ms. Obviamente, se desperdicia mucho tiempo en la caja. Me aseguré de que el DNS estuviera en la memoria caché antes de la prueba.

Hice un banco Apache en el servidor con una concurrencia de 1000 - terminó 10.000 solicitudes en 4.3 segundos ... lo que significa un promedio de 4.3 milisegundos.

ACTUALIZACIÓN: Solo por sonrisas, instalé Apache + PHP en la misma máquina e hice un simple eco "Hello World" y obtuve un tiempo de respuesta de 92 ms en promedio (dos sobre ping).

¿Hay algún lugar en el que me pierdo?


Odio responder mis propias preguntas, pero quiero transmitirles lo que descubrí a los futuros lectores.

tl; dr: hay algo mal con res.write (). Use express.js o res.end ()

Acabo de llevar a cabo un montón de pruebas. Configuré varios tipos de servidor Node y mezclé cosas como PHP y Nginx. Aquí están mis hallazgos.

Como se indicó anteriormente, con el fragmento que incluí anteriormente, estaba perdiendo alrededor de 250ms / solicitud, pero los puntos de referencia de Apache no replicaron esos problemas. Luego procedí a hacer una prueba de PHP y obtuve resultados que van desde 2 ms hasta 20 ms sobre ping ... una gran diferencia.

Esto me llevó a investigar un poco más, comencé un servidor Nginx y proxé el nodo a través de él, y de alguna manera, mágicamente cambió la respuesta de 250ms a 15ms sobre ping. Estaba a la par con ese script PHP, pero ese es un resultado realmente confuso. Por lo general, saltos adicionales ralentizarán las cosas.

Intrigado, hice un servidor express.js también, y sucedió algo aún más interesante, el ping fue 2ms por sí mismo. Busqué en la fuente durante bastante tiempo y noté que carecía de un res.write() , sino que iba directamente a res.end() . res.write otro servidor eliminando el "Hello World" de res.write y lo agregué a la res.end Sorprendentemente, el ping fue 0ms sobre ping.

Hice un poco de búsqueda sobre esto, quería ver si era un problema bien conocido y me encontré con esta pregunta SO, que tenía exactamente el mismo problema. velocidad de respuesta nodejs y nginx

En general, es interesante. Asegúrese de optimizar sus respuestas y enviarlo todo de una vez.

Mucha suerte a todos!


Si bien las herramientas para desarrolladores de Chrome son una buena forma de investigar el rendimiento de los servidores de aplicaciones para el usuario, le dan una estimación muy aproximada de la carga de los tiempos / cpu reales del servidor. Si tiene ~ 350 ms de tiempo de solicitud total en las herramientas de desarrollo, reste de este número la búsqueda DNS + Conectar + Enviar + Recibir, luego reste el tiempo de ida y vuelta (90 ms?) Y luego tendrá la primera estimación. En su caso, espero que el tiempo de solicitud real sea de menos de milisegundos. Intenta ejecutar este código en el servidor:

var http = require(''http''); function hrdiff(t1, t2) { var s = t2[0] - t1[0]; var mms = t2[1] - t1[1]; return s*1e9 + mms; } http.createServer(function(req, res) { var t1 = process.hrtime(); res.writeHead(200, {''Content-Type'': ''text/html''}); res.write(''Hello World''); res.end(); var t2 = process.hrtime(); console.log(hrdiff(t1, t2)); }).listen(8080);

En función de un resultado ab , debe estimar el promedio de envío + solicitud + tiempo de recepción como máximo 4,2 ms (4200 ms / 10000 req) (¿lo ejecutó en el servidor? ¿Qué concurrencia?)