Test rendimiento servidor sockets

EnZo

El verano pasado escribí un servidor de sockets en PHP para el juego flash (conkis.com) que voy a sacar este año.

Elegí PHP porque seguramente sea un servidor provisional y no me queria enfrascar con C++ ni Java.
En un futuro seguramente lo haremos en C o C++. Pero lo haremos en funcion del rendimiento que el servidor de PHP dé.

Y a eso vengo, he estado haciendo algunas pruebas con Node.js porque he visto que es muy rapido y facil de programar con el. Entonces he hecho un servidor de sockets rudimentario. Para compararlo con el ya hecho en php.

Despues de el rollo, mi pregunta es: Se os ocurre alguna manera rapida de hacer un cliente que simule la conexion y el envio de datos de N usuarios al mismo tiempo?
Uso windows (Sí, soy un jugón xD) pero tambien tengo un dedicado centos donde puedo probar.

Gracias de antemano.

elkaoD

Pues con cualquier lenguaje haces N conexiones al servidor y haces estadísticas como los secs/petición medio (y por tanto peticiones/segundo) y otras estadísticas que te interesen.

Si lo haces desde tu propio ordenador sabes seguro que el cuello de botella no está en la red ni en la tarjeta ni en la implementación del stack TCP/IP (creo que las conexiones a localhost no van por el stack de red) pero segurmanete añadas overhead al ordenador, por lo que quizá deberías hacer las pruebas en otro ordenador en red (sobre todo si tiras mucho de disco/CPU en el servidor.)

Para ver si escala haces las pruebas con un N cada vez mayor y plotteas en una gráfica. Cuanto más lineal sea la gráfica, mejor escala tu solución.

No hagas la prueba fuera de red local porque entonces vas a medir la eficiencia de la red y no del servidor.

1 respuesta
r2d2rigo

#3 correcto, siempre que hagas la conexion a localhost pasa por el loopback, asi que ahi se esta bombardeando la CPU a saco.

1 respuesta
EnZo

Gracias a los dos #2 y #3. Lo de probarlo desde otro pc (red local) ya lo habia considerado para que lo que consuma el cliente no repercuta en lo que consume el server.

La putada es que yo esperaba que hubiese algun comando en linux parecido al ab de apache (http://httpd.apache.org/docs/2.0/programs/ab.html) algo así para evitarme el programar el testeador. O saber si ya existia alguno hecho por ahí listo para ejecutar :P

Me va a tocar programarlo no?

1 respuesta
elkaoD

#4 mírate netcat.

1 respuesta
EnZo

#5 Me lo he bajado y lo he probado. Pero no tiene ningun parametro para definir cuantos clientes quieres que haga el proceso.

1 respuesta
elkaoD

#6 eso ya con .bat o shell scripts y forkeando. En Windoes tiene Cygwin.

erdanblo

no estoy muy puesto pero creo que jmeter hace eso que pides.
salu2

1 respuesta
EnZo

#8 Jmeter parece mas para servidores http. No lo he probado pero eso parece por lo que he leido.

Usuarios habituales

  • EnZo
  • erdanblo
  • elkaoD
  • r2d2rigo