每个客户端的最大websocket连接数



我正在开发一个工具来加载测试我的signalR应用程序,使用Signal R Client HUB api。

我想测试我的应用程序的行为在websockets对10K客户端。

问题是我的工具无法在一定数量的连接后创建新的连接。它可以创建的最大连接数在2000-3000之间。

我不明白这背后的原因是什么。我检查了服务器端,没有发现任何问题。当服务器能够响应浏览器客户端后。

登录工具的错误是:

System.Net.WebSockets.WebSocketException (0x80004005): Unable to connect to the remote server ---> System.Net.WebException: The remote server returned an error: (503) Server Unavailable.
   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Net.WebSockets.ClientWebSocket.<ConnectAsyncCore>d__0.MoveNext()
   at System.Net.WebSockets.ClientWebSocket.<ConnectAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNet.SignalR.Client.Transports.WebSocketTransport.<PerformConnect>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNet.SignalR.Client.Transports.WebSocketTransport.<DoReconnect>d__9.MoveNext()

当websocket客户端增加到1700或更多时,这个工具有时会挂起。

这个工具是。net 4.5 windows应用程序。我正在访问的signalR服务器也在同一网络上。

我正在我的signalR服务中执行某些方法。一种方法是从客户端传递输入数据到服务器,另一种方法是客户端订阅从服务器接收数据。

我还在不同的机器上测试了这个工具,它能够生成分布式负载,但我不想运行该工具的多个实例。我的问题是为什么单实例不能生成批量websocket请求到我的信号R服务?

解释一下您在测试中做了什么,以及在哪里执行客户端和服务器。

如果你不停地发送消息,可能你的频道已经饱和了。当连接开始失败时,网卡的吞吐量是多少?CPU使用率是多少?也许您的客户机或服务器无法处理如此多的数据。

您是否尝试并行运行两个客户端?也许问题出在你的客户端,它不能适当地处理那么多的连接。

您应该使用某种形式的线程来创建多个并行连接,并在测试期间保持它们活动。请看看我用来做性能测试的WebSocket echo load generator,并按照这个方法创建SignalR load generator。

相关内容

  • 没有找到相关文章

最新更新