2011-01-12 24 views
5

Actualmente estoy probando el rendimiento entre Node.js y Apache.Pruebas de rendimiento de Apache vs nodejs

Lo que quiero demostrar es:

  • Apache es más lenta, ya que necesita mucho más hilo interruptores que Node.js que utiliza un solo subproceso de eventos-Loop.
  • Apache necesita mucha más memoria RAM/Conexión en comparación con Node.js que utiliza epoll.

Eso significa, que lo que yo quiero probar es:

  1. Solicitudes/segundo por la CPU
  2. conexiones por RAM

Ok eso es lo que quiero hacer! Pero la pregunta es ¿CÓMO debería hacer esto? Para la Solicitud/segunda prueba, podría simplemente usar Apache Benchmark (ab) (¿Pero ab es incluso adecuado para Node.js?) Y la pregunta más importante es: ¿Cómo puedo probar Connections/RAM?

Respuesta

4

Conexiones/segundo: Hice esta prueba recientemente con un simple servidor "hola world" node.js, y obtuve ~ 9,000 solicitudes/segundo por núcleo de CPU. (Usando ab, btw. Prueba en un 2.5GHz, quad-core, Xeon linux box).

Conexiones por RAM: hay dos # aquí que te importan. Memoria base (se requiere memoria sin conexiones) y memoria por conexión. Probé esto en mi Mac Pro girando un servidor/cliente simple que mantiene abiertas las conexiones HTTP. Ejecuté el comando 'superior' para ver el uso de la memoria. En cero conexiones, el nodo tenía una RSIZE de 14 MB. Luego, con el cliente corriendo y manteniendo 2000 conexiones concurrentes abiertas, RSIZE creció a 24MB. Entonces ~ 5MB/1000 conexiones.

Cuando obtiene # para Node y Apache, ¿puede publicarlos aquí? Tengo curiosidad también.

+0

Con ab obtengo ~ 6300 R/S con una concurrencia de 100 en un 2.5ghz dualcore K8 AMD. En cuanto a Connections/Ram, utilicé la secuencia de comandos de tautologics -> github.com/tautologistics/node_loadtest donde logro unas ridículas 61000 conexiones con alrededor de 250MB. Lo que sí necesito saber es un método para probar la concurrencia máxima/Ram con apache. ¿¿¿Alguna sugerencia??? Ah, ¿y podrías publicar tu guión, cómo has logrado conexiones de 5MB/1000? – user572715

17

"Quiero probar" es una actitud muy equivocada al hacer marcas de banco. No estás probando nada, estás midiendo el rendimiento real. Puede que te sorprenda o no el resultado, pero realmente debes comenzar con "Veamos qué puede hacer esto".

Aparentemente, por todos los puntos de referencia que he visto, el nodo ocupa el primer lugar en términos de velocidad bruta, pero usa MÁS memoria que apache, por lo que ahí va su 'prueba'.