Tôi muốn biết một số phương pháp khác nhau đã được sử dụng để kiểm tra ứng dụng dựa trên trung tâm SignalR.Cách tốt nhất để tải thử nghiệm một ứng dụng trung tâm SignalR là gì?
Trả lời
Nói tóm lại, nếu sử dụng Hubs, bằng cách sử dụng client Net sẽ đủ.
Trong trường hợp của tôi, tôi có một trung tâm nguồn cấp tin tức tập trung vào dữ liệu khách hàng cụ thể dựa trên ID hồ sơ của người dùng. Trong trường hợp thử nghiệm của tôi, tôi tải lên một loạt các ID hồ sơ (6000 trong trường hợp này), gọi một phương thức hub được gọi là JoinNewsfeed() cùng với ID kết nối của máy khách và ID cấu hình. Mỗi 100ms một kết nối mới được thiết lập.
[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);
}
Chỉ số hiệu suất được liệt kê here thực hiện thủ thuật trên máy chủ. Để đảm bảo rằng một client đã kết nối và quá trình populating đối tượng client trên máy chủ đã hoàn tất thành công, tôi có một phương thức phía máy chủ để gọi một hàm phía máy khách với số và danh sách các máy khách được kết nối có nguồn gốc từ máy khách được kết nối bộ sưu tập.
Tôi chưa thực hiện nhiều thử nghiệm hiệu suất trên SignalR, nhưng dự án cung cấp công cụ hữu ích - Crank - để tạo tải khách hàng.
Các wiki dự án cũng có một số hướng dẫn về hữu ích performance counters and settings
@ElHaix Từ những gì tôi đã thấy trong các thử nghiệm của riêng mình, phương pháp của bạn không tạo kết nối mới, nhưng tái sử dụng kết nối hiện có. Khi bạn lặp lại tập hợp các profileID, bạn sẽ thấy rằng hubConnection.ConnectionID vẫn giữ nguyên. Để tạo một kết nối mới, bạn cần tạo một thể hiện của HubConnection bên trong vòng lặp 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);
}
Bạn đã thêm gói nào? – RredCat
Crank thể chỉ PersistenConnections thử nghiệm nhưng kể từ khi bạn đang tìm kiếm để kiểm tra SignalR Hub riêng của mình, bạn có thể sử dụng Tresi. Đó là một ứng dụng thương mại. Dưới đây là một số liên kết về cách kiểm tra hiệu suất được thực hiện với nhiều loại khác nhau của tải
Cài đặt Performance Counter cho HTTPWebRequests như Created/Sec, Đã hủy/Sec, Thời gian trung bình vv được hiển thị trong khi thực hiện kiểm tra tải. Nó cũng cho thấy số liệu tính toán khác như Throughput/user Dưới đây là ảnh chụp màn hình của ứng dụng
Hãy kịch bản của riêng bạn sử dụng công cụ Gatling cho người dùng tạo ra ảo (đa luồng) và sử dụng java client signalr. vui lòng ghi rõ trong nhận xét nếu bạn muốn biết cách đính kèm tập lệnh tùy chỉnh được viết bằng java hoặc scala để gatling người dùng ảo. Hãy cho tôi biết nếu bạn muốn thử nghiệm kế hoạch kiểm tra hiệu suất tín hiệu vì nó là điểm then chốt trong việc tiến hành kiểm tra.
Từ hiểu biết của tôi, Crank không được sử dụng với các trung tâm. Còn gì nữa không? – ElHaix
@Morgan: Liên kết Crank của bạn bị hỏng ... – billy