Me gustaría conocer algunos de los diferentes métodos que se han usado para probar una aplicación basada en concentradores SignalR.¿Cuál es la mejor forma de probar la carga de una aplicación SignalR Hubs?
Respuesta
En resumen, si el uso de concentradores, será suficiente utilizar el cliente .Net.
En mi caso, tengo un concentrador de suministro de noticias que diseña datos específicos del cliente basados en el ID del perfil del usuario. En mi caso de prueba, cargué un montón de identificaciones de perfil (6000 en este caso), invoco un método concentrador llamado JoinNewsfeed() junto con la ID de conexión y el ID de perfil específicos del cliente. Cada 100 ms se establece una nueva conexión.
[TestMethod]
public void TestJoinNewsfeedHub()
{
int successfulConnections = 0;
// get profile ID's
memberService = new MemberServiceClient();
List<int> profileIDs = memberService.GetProfileIDs(6000).ToList<int>();
HubConnection hubConnection = new HubConnection(HUB_URL);
IHubProxy newsfeedHub = hubConnection.CreateProxy("NewsfeedHub");
foreach (int profileID in profileIDs)
{
hubConnection.Start().Wait();
//hubConnection = EstablishHubConnection();
newsfeedHub.Invoke<string>("JoinNewsfeed", hubConnection.ConnectionId, profileID).ContinueWith(task2 =>
{
if (task2.IsFaulted)
{
System.Diagnostics.Debug.Write(String.Format("An error occurred during the method call {0}", task2.Exception.GetBaseException()));
}
else
{
successfulConnections++;
System.Diagnostics.Debug.Write(String.Format("Successfully called MethodOnServer: {0}", successfulConnections));
}
});
Thread.Sleep(100);
}
Assert.IsNotNull(newsfeedHub);
}
métricas de rendimiento que figuran here hacer el truco en el servidor. Para garantizar que un cliente se haya conectado y el proceso de rellenar el objeto cliente en el servidor se haya completado con éxito, tengo un método del lado del servidor que invoca una función del lado del cliente con el número y la lista de clientes conectados derivados del cliente conectado colección.
No he realizado muchas pruebas de rendimiento en SignalR, pero el proyecto proporciona una herramienta útil - Crank - para generar la carga del cliente.
El wiki del proyecto también tiene una cierta dirección en útiles performance counters and settings
@ElHaix Por lo que he visto en mis propias pruebas, su método no crea una nueva conexión, sino que reutiliza la conexión existente. A medida que recorre la colección de ID de perfil, debería ver que hubConnection.ConnectionID permanece igual. Para crear una nueva conexión, necesitaría crear una instancia de HubConnection dentro del bucle foreach.
int successfulConnections = 0;
const int loopId = 10;
Console.WriteLine("Starting...");
for (int i = 1; i <= loopId; i++)
{
Console.WriteLine("loop " + i);
var hubConnection = new HubConnection(HUB_URL);
IHubProxy chatHub = hubConnection.CreateProxy(HUB_NAME);
Console.WriteLine("Starting connection");
hubConnection.Start().Wait();
Console.WriteLine("Connection started: " + hubConnection.ConnectionId);
chatHub.Invoke("Register", "testroom").ContinueWith(task2 =>
{
if (task2.IsFaulted)
{
Console.WriteLine(String.Format("An error occurred during the method call {0}", task2.Exception.GetBaseException()));
}
else
{
Console.WriteLine("Connected: " + hubConnection.ConnectionId);
successfulConnections++;
}
});
Thread.Sleep(1000);
}
¿Qué paquetes ha agregado? – RredCat
manivela puede sólo PersistenConnections de ensayo, pero ya que usted está buscando para probar el Hub SignalR sí, puede utilizar Tresi. Sin embargo, es una aplicación comercial. Estos son algunos enlaces sobre cómo la prueba de rendimiento se lleva a cabo para diferentes tipos de cargas
Configuración del contador de rendimiento para HTTPWebRequests como Creado/Sec, Abortado/seg., Vida útil media etc. se muestran durante la ejecución de la prueba de carga. También muestra otras métricas calculadas como Throughput/usuario A continuación se muestra captura de pantalla de la aplicación
Haga su propia escritura usando la herramienta para la creación de Gatling usuario virtual (multihilo) y el uso de Java cliente signalr. especifique en el comentario si desea saber cómo adjuntar su script personalizado escrito en java o scala a gatling usuarios virtuales. Dígame si desea un plan de prueba para las pruebas de rendimiento del señalizador, ya que es un punto clave en la realización de pruebas.
- 1. Unittest SignalR Hubs
- 2. Ejemplo de la aplicación SignalR Console
- 3. ¿Cuál es la mejor manera de probar el código GWT
- 4. ¿Cuál es la mejor manera de probar una aplicación de rieles?
- 5. Cuál es la mejor aplicación de .dispose()
- 6. ¿Cuál es la forma limpia de probar FileField en django?
- 7. ¿Cuál es la forma correcta de probar áreas en excepciones?
- 8. ¿Cuál es la mejor manera de perfilar una aplicación Sinatra?
- 9. ¿Cuál es la mejor forma de diseñar una clase C#?
- 10. ¿Cuál es la mejor forma de detectar la inactividad del usuario en una aplicación Silverlight?
- 11. ¿Cuál es la mejor forma de almacenar la configuración del usuario para una aplicación .NET?
- 12. ¿Cuál es la mejor manera de probar un RedirectToAction?
- 13. ¿Cuál es la mejor manera de probar javascript?
- 14. ¿Cuál es la mejor manera de probar un procedimiento almacenado?
- 15. ¿Cuál es la mejor forma de interactuar con Ogre (C++) en una aplicación Java?
- 16. ¿Cuál es la mejor forma de probar las aplicaciones de formularios web (ASP.NET)
- 17. ¿Cuál es la mejor manera de implementar una aplicación Pylons?
- 18. ¿Cuál es la forma preferida de configurar una aplicación mono?
- 19. ¿Cuál es la forma preferida de implementar una aplicación Symfony2?
- 20. ¿Cuál es la mejor forma de generar Microsoft OOXML (docx) desde una aplicación de rieles?
- 21. ¿Cuál es la mejor forma de distribuir aplicaciones Java?
- 22. La mejor forma de probar los repositorios que usan DbContext
- 23. ¿Cuál es la mejor forma de monetizar la aplicación de Facebook?
- 24. ¿Cuál es la mejor forma de usar NLog con MEF?
- 25. La mejor manera de probar una aplicación Delphi
- 26. Cómo envío mensajes del servidor al cliente usando SignalR Hubs
- 27. ¿Cuál es la mejor forma de obtener Contexto?
- 28. ¿Cuál es la mejor forma de implementar una aplicación Flask usando Jython en Tomcat?
- 29. ¿Cuál es la mejor forma de insertar configuraciones en Javascript en una aplicación MVC?
- 30. ¿Cuál es la mejor forma de generar e imprimir facturas en una aplicación .NET?
Según tengo entendido, Crank no es para usar con cubos. ¿Algo más? – ElHaix
@Morgan: su enlace de Crank está roto ... – billy