2011-02-28 14 views
6

Tenemos clientes .NET que se ejecutan en Windows 7 incrustados con sql server express. Se ejecutan desconectados y cada tanto se conectan a un servidor central y vuelcan su información y extraen la nueva información pertinente. Queremos hacer una prueba de estrés de todo el sistema distribuido y estamos tratando de pensar en una forma rentable de hacerlo. Uno de nuestros desarrolladores tuvo la idea de utilizar Amazon Cloud y generar 1000 clientes, pero solo admiten O/S de Windows Server y parece que podría tener algún dinero si tiene que volver a ejecutar la prueba varias veces, lo que es probable .Cómo probar 1000 clientes de Windows 7 clientes

Pensamos en simular los 1000 clientes en una sola máquina, que pretendería tener 1000 clientes y hacer todas las llamadas de forma asíncrona, pero si está ejecutando en una máquina, algunos de sus techos serán RAM y procesador de uno máquina versus un sistema más grande, así que no estoy seguro de cuán "real" de una imagen nos dará.

Todas las llamadas se realizan con WCF entre el cliente y el servidor.

Alguien tiene alguna experiencia en esta área y, de ser así, ¿cómo lo abordaron?

gracias,

Súper Timmy

Respuesta

1

¿Has mirado en SOASTA? Proporcionan pruebas de carga SOA basadas en la nube.

+0

Una cosa que todavía no he descubierto sobre la "nube", como en el caso de SOASTA, ¿le dan la capacidad de cargar esencialmente una máquina con Windows 7 y luego clonarla tantas veces como quiera? ¿O se parece más a un entorno de alojamiento compartido en el que le dan acceso a un directorio virtual y solo le permiten cargar algunos archivos? –

+0

Dado que se trata de una interfaz de servicio, el lado de la prueba en realidad no necesita ser clientes de Windows 7, ¿o sí? Está probando la API, por lo que, dado el flujo de trabajo y la carga útil, debería poder realizar una prueba de carga adecuada, ¿sí? http://www.soasta.com/technology/cloudtest-builder/wsdl-recording/ – andrewbadera

0

Dividir y conquistar, ver si puede obtener el servidor de prueba de destino conectado al mismo interruptor que sus desarrolladores. Use dividir los clientes en esas máquinas y haga que todos corran contra el servidor de prueba. (Seguir el mismo interruptor elimina los efectos de red de la distorsión de los resultados en el hardware)

Los desarrolladores suelen tener máquinas bastante grunty y normalmente hay algunos de ellos. De esa forma no destruirá la máquina de prueba y podrá monitorear lo que ocurra.

Idealmente, usted podría usar el agente Visual Test 2010 Load Test en las máquinas de desarrollo. Esta herramienta le dará la capacidad de monitorear las estadísticas de toda la máquina en la prueba y ofrecer una muy buena imagen de cómo responde su servidor.

Si las máquinas que ejecutan la prueba de prueba alojan una página web en localhost que llama al servicio web requerido puede ser la mejor opción para realizar la prueba.

Esto depende de la naturaleza exacta de su entorno de desarrollo y de los arreglos de licencias de Visual Studio.

Una de las cosas clave que hay que averiguar es la cantidad de solicitudes/segundo que cada cliente haría del servicio web de WCF. Una vez que tenga ese número, puede dividir ese número en las solicitudes máximas/segundo de cada máquina de prueba para averiguar cuántas máquinas de prueba se requieren.

Para fines de prueba de carga, no necesita tener clientes "reales" de su servicio web. Como el servicio web es una interfaz, puede simular la actividad de un cliente normal y ejecutarlo sin las pausas normales de "tiempo de reflexión", lo que le permite probar la carga de 1000 clientes sin necesidad de ejecutar una instancia de cada cliente.

E.g. si cada cliente accede al servicio web una vez por minuto para un total de 1000/60 = 16.7 llamadas por segundo. SI cada llamada se completa en 3 segundos, 50 usuarios virtuales podrían crear la misma carga (50/3 = 16.7). Por experiencia, dos máquinas que ejecutan la prueba de carga de Visual Studio podrían generar la carga y no sobrecargar su CPU.

+0

Eso suena como un buen escenario de peor caso, pero esperaba ejecutar muchas más instancias que los desarrolladores tienen computadoras. El otro problema es que el servidor se gestiona en el espacio de almacenamiento, por lo que no tengo acceso físico a él. –

+0

Una única máquina de desarrollo debe poder llamar al servicio web de WCF como máximo una vez cada 2-3 segundos/usuarios virtuales, lo que le proporciona un rendimiento de al menos 50 solicitudes por segundo. – Nat

0

Si usa WCF con un protocolo basado en texto sobre HTTP (lo que parece probable), tiene varias herramientas disponibles. La mayoría de las herramientas de Web Load Testing pueden registrar el tráfico HTTP actuando como un proxy para un navegador, que generalmente también permite la grabación desde clientes ricos. Es posible que necesite hacer una personalización adicional de sus cajas de prueba ya que las herramientas están optimizadas para simular navegadores. Hemos hecho esto para algunos de nuestros clientes y funcionó bastante bien.

Varias de las herramientas de pruebas de carga apoyar la generación de la carga de la nube (incluyendo la nuestra - Web Performance Tester de carga - y otros como BrowserMob, LoadStorm, etc) para iniciar su evaluación con los que - se toma de la simulación de 1000 usuarios virtuales muy fácil y asequible también.