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

每个客户端的最大websocket连接数,websocket,signalr,signalr-hub,signalr.client,Websocket,Signalr,Signalr Hub,Signalr.client,我正在开发一个工具,使用Signal R客户端集线器API对我的Signal R应用程序进行负载测试 我想在WebSocket上针对10K客户端测试我的应用程序行为 问题是我的工具在经过一定数量的连接后无法创建新连接。它可以创建的最大连接数仅在2000-3000之间 我不知道这背后的原因是什么。我在服务器端进行了检查,没有发现任何问题。因为服务器能够在客户端之后响应浏览器 登录工具时出现的错误是: System.Net.WebSockets.WebSocketException (0x80004

我正在开发一个工具,使用Signal R客户端集线器API对我的Signal R应用程序进行负载测试

我想在WebSocket上针对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()
System.Net.WebSockets.WebSocketException(0x80004005):无法连接到远程服务器-->System.Net.WebException:远程服务器返回错误:(503)服务器不可用。
位于System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar、Func`2 endFunction、Action`1 endAction、Task`1 Promission、Boolean requiresSynchronization)
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Net.WebSockets.ClientWebSocket.d_u0.MoveNext()中
在System.Net.WebSockets.ClientWebSocket.d_u0.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.AspNet.signal.Client.Transports.WebSocketTransport.d_u2.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.AspNet.signal.Client.Transports.WebSocketTransport.d_u9.MoveNext()上
有时,当websocket客户端增加到1700或超过1700时,此工具会挂起

此工具是.NET 4.5 windows应用程序。我正在使用的信号服务器也在同一个网络上

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


我还从不同的机器上测试了这个工具,在那里它可以生成分布式负载,但我不想运行这个工具的多个实例。我的问题是,为什么单个实例无法向我的signal R服务生成批量websocket请求?

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

如果您不间断地发送消息,可能您已经使通道饱和。当连接开始出现故障时,NIC的吞吐量是多少?CPU使用率是多少?可能您的客户机或服务器无法处理如此多的数据

您是否尝试过并行运行两个客户端?可能问题在于您的客户机无法正确处理如此多的连接

更新


您应该使用某种形式的线程来创建多个并行连接,并在测试期间使它们保持活动状态。请查看我用于进行性能测试的my,并按照此方法创建Signal load generator。

感谢Vtortola的回复。我已更新了我的问题,回答了您的问题…该工具是否尝试在每个连接上运行线程?你是如何处理多重连接和线程的?不。我这里没有使用任何线程。请告诉我这里是否有任何解决方案。如果使用线程,我可以生成多个客户端。我在这里观察到的另一件事是,在某些客户端说2000或更多之后,我得到了传输时间dout,并且在某个时候它开始断开已经连接的客户端。在服务器IIS日志中,我发现了信号器/中止日志。根本没有线程?那么,您是如何创建多个连接的呢?我正在循环中创建客户机。