Alchemy Webソケットを使用してWebソケットサーバーを実装しましたが、現在、ストレステストを試みています。サーバーに接続してデータを送信する多数のクライアントを作成するために、C#で次のメソッドを作成しました。
private void TestWebSocket()
{
int clients = 10;
long messages = 10000;
long messagesSent = 0;
String host = "127.0.0.1";
String port = "11005";
WSclient[] clientArr = new WSclient[clients];
for (int i = 0; i < clientArr.Length; i++)
{
clientArr[i] = new WSclient(host, port);
}
Random random = new Random();
var sw = Stopwatch.StartNew();
for (int i = 0; i < messages; i++)
{
clientArr[i % clients].Send("Message " + i);
messagesSent++;
}
sw.Stop();
Console.WriteLine("Clients " + clients);
Console.WriteLine("Messages to Send" + messages);
Console.WriteLine("Messages Sent " + messagesSent);
Console.WriteLine("Time " + sw.Elapsed.TotalSeconds);
Console.WriteLine("Messages/s: " + messages / sw.Elapsed.TotalSeconds);
Console.ReadLine();
for (int i = 0; i < clientArr.Length; i++)
{
clientArr[i].Disconnect();
}
Console.ReadLine();
}
ただし、サーバーが受信するメッセージは少なくなります(100などの少数の場合でも)。または、複数のメッセージが1つのメッセージとして受信される場合もあります。例:
Message1 = abc Message2 = def
受信者=abcdef
私はここに示されている例を多かれ少なかれ複製しようとしています。現在、サーバーとクライアントの両方がローカルで実行されています。問題が何であるか、またはテスト方法を改善する方法についてのアイデアはありますか?