Saber si web/servidor soporta mucha gente

MisKo

Buenas , no me cabe todo en el titulo xDDD

Me gustaría saber si hay alguna herramienta o algo parecido que te diga si una web / servidor esta preparado para soportar mucha gente al mismo tiempo ( por ejemplo 100mil personas o cosas asi )

Supongo que dependerá mucho de la programacion en PHP y de lo optimizadas que esten las querys a base de datos, pero aun asi, siempre he tenido esta duda.

Un saludo :)

TaiCHoKe

Hazte un stress test a mano que es bastante facil.

Create 100mil hilos o los que quieras y manda peticiones al puerto por el que acepta conexiones el servidor.

MisKo

pero si lo hago desde mi misma conexion, yo no podré ver si el servidor sigue funcionando pk tendre mi conexion petada no? xD

TaiCHoKe

Le haces pings y vas viendo el tiempo de respuesta. Si te da un timeout es que algo va mal.

MisKo

Pero a ver, el tema esta en que si se hace desde el mismo ordenador no tiene fiabilidad ninguna.

Es como si te pones a descargar / subir algo a internet y te pones a hacer pings, es normal que te aumente el tiempo de respuesta por que tu ordenador esta sobrecargado, y al resto de usuarios les ira bien.

1 respuesta
TaiCHoKe

Claro que no hazlo desde otro xD

MisKo

Eso es lo que te estaba diciendo xDDD

elkaoD

#5 yo opino al revés, lo debes hacer desde LAN. Así te evitas pensar que lo hace de cuello de botella es tu aplicación cuando puede ser la conexión.

Si va bien en un stress test en local y mal en remoto, lo que necesitas es más ancho de banda/mejor red/...

Lo que quieres comprobar es tu aplicación, no tu conexión :)

EDIT: Ya comentamos esto mismo en otro hilo (y por qué LAN y no en local)

http://www.mediavida.com/foro/9/test-rendimiento-servidor-sockets-440807

1 respuesta
MisKo

#8 me he perdido un poco en la respuesta xD

Lo que quiero simular es imaginate, 100mil personas al mismo tiempo navegando en la misma pagina.

Si lo monto todo en mi red local, a lo mejor la pagina tarda por que el servidor es una mierda y no puede hacer frente a tanta peticion ( comparado con el servidor web que puedo tener yo )

Es decir, para hacer 100mil querys simultaneas, tiras de CPU y RAM , si el ordenador donde hago esas pruebas en LOCAL no se parece en nada al servidor final donde va a estar la web, de que me sirven esas pruebas?

1 respuesta
elkaoD

#9 pues porque a ti no te interesa ni la CPU ni la RAM ni nada de nada de nada que tenga que ver con local o remoto.

A ti te interesa la respuesta de tu programa que es lo que puedes controlar. El hardware se compra, el software es lo que controlas.

Obviamente tienes que controlar que la CPU/RAM no te haga cuello de botella, pero es más fácil que el cuello de botella sea tu conexión al tirar en remoto, a no ser que tengas una botnet con miles de conexiones para que ese no sea el cuello de botella.

Además, si la CPU/RAM es tu cuello de botella sólo tienes que controlarlo con el visor de recursos de tu PC y si estás petando CPU/RAM sabes que ese es tu cuello de botella para la prueba que estás realizando y por tanto, invalidarla. En remoto, ¿cómo sabes si el PING tarda 200ms más por la conexión o por tu software?

Si el cuello de botella es CPU/RAM sólo tienes que comprar más. Si el cuello de botella es tu software (que es lo que te interesa saber) tienes que optimizarlo.

Además, antes floodeas tu conexión en remoto que llegar a tu límite de hardware en local... el problema no es la conexión de tu servidor remoto si no que TUS PETICIONES son desde tu conexión de casa que además probablemente tenga una subida DE MIERDA, incomparable con miles de conexiones a la vez... La única forma de verlo en un entorno real es eso, subirlo a tu servidor y usar una botnet o algo así con miles de conexiones independientes.

Léete el otro hilo.

1 respuesta
MisKo

#10 Me lo he leído antes de contestarte y perdona si sigo pero soy algo cabezón y a veces me cuesta entender las cosas xD

Tal como tu dices, lo que podemos controlar es el software, y en una pagina web, el software es la programación en si.

En programación, hay muchas formas de hacer las cosas, pero solo una es la buena, por ejemplo, puedo hacer una query que tarde sus 10 segs en ejecutarse, o conseguir el mismo resultado con 4 querys independientes en 2 segundos.

La cuestion es que, la mayoria de cosas, cuando las prueba una persona solo, apenas afectan al rendimiento, pero cuando estan ejecutando la misma query muchas personas, es cuando se estresa el servidor.

Entonces, cada ejecución o consulta a base de datos, consume X memoria, tanto de CPU como de RAM, asi que no veo de que forma es fiable realizar 100mil conexiones a por ejemplo, un Pentium 4 a 2Ghz con 2gb de ram, frente a un i5 con 4nucleos a 2.66ghz y 16gb de ram.

A lo mejor esta todo mas que optimizado y todo de puta madre, pero con 100mil conexiones en el primer servidor petaria todo y 100mil conexiones en el segundo no.

EDIT:

de todas formas, no me habeis entendido, queria una herramienta para comprobar la fiabilidad de una web, no que lo fuera a probar yo solo, es decir, buscaba algo como esto : https://loadimpact.com pero sin tener que pagar :P

LOc0
chapucilla_para_ir_probando

Un simulador de eventos discretos:
http://www.omnetpp.org/
http://code.google.com/p/omnet-httptools/
http://tinyurl.com/cv5g6mu

Salu2 ;)

Usuarios habituales

  • LOc0
  • MisKo
  • elkaoD
  • TaiCHoKe