Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Azure移动服务信号应用程序冻结_.net_Azure_Signalr_Azure Mobile Services - Fatal编程技术网

.net Azure移动服务信号应用程序冻结

.net Azure移动服务信号应用程序冻结,.net,azure,signalr,azure-mobile-services,.net,Azure,Signalr,Azure Mobile Services,我们有一个非常基本的pub/sub应用程序,客户端注册到会话,并从其他参与者那里获得与他们相关的更新(例如,取决于用户的组或状态) 有关更新的通知使用SignalR发送,SignalR在Azure移动服务标准实例上运行 每个用户位于两个信号器组中:一个包含会话中的所有用户(组名=sessionGuid),另一个仅包含该会话中的该用户(组名=sessionGuid+userGuid)。这样,我们可以轻松地向每个用户发送适当的通知 当用户数量较少时,这种方法可以很好地工作,但当连接的客户端数量接近2

我们有一个非常基本的pub/sub应用程序,客户端注册到会话,并从其他参与者那里获得与他们相关的更新(例如,取决于用户的组或状态)

有关更新的通知使用SignalR发送,SignalR在Azure移动服务标准实例上运行

每个用户位于两个信号器组中:一个包含会话中的所有用户(组名=sessionGuid),另一个仅包含该会话中的该用户(组名=sessionGuid+userGuid)。这样,我们可以轻松地向每个用户发送适当的通知

当用户数量较少时,这种方法可以很好地工作,但当连接的客户端数量接近20时,整个服务似乎会冻结,唯一有帮助的是关闭所有客户端,以便服务能够恢复。这似乎是某种DDOS攻击,但导致这种攻击的连接数量是荒谬的。这毕竟是Azure提供的最大的移动服务实例,一旦投入生产,该服务应该能够同时处理数千名用户

客户端是使用WinRT和.NET(WPF)构建的,所以我相信使用WebSocket。消息大小很小,因为只发送很少的guid,甚至发送速率也没有那么快(最大每秒1个)

我计划将我们的服务从移动服务转移到Azure网站,希望这会有所帮助,但我担心不会。有什么想法吗?移动服务是否会成为如此糟糕的瓶颈?是否有一些配置我错过了,这将有帮助?背板

日志中的几个例外:

发送时出错:System.Net.WebSockets.WebSocketException(0x800000E):在System.Web.WebSockets.WebSocketPipe.c_uDisplayClass1.b_uu0(Int32 HREROR、Int32 cbIO、Boolean fUtf8Encoded、Boolean fFinalFragment、Boolean fClose)处意外调用了一个方法--


System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]:服务器无法处理请求;请重试该操作。如果问题仍然存在,请与服务总线管理员联系并提供跟踪id


这不是预期的行为。标准的移动服务应该能够处理20个以上的客户端。你能从一个客户端捕获一个网络跟踪来看看发生了什么吗?您是否尝试过扩展到两个实例,并查看是否得到相同的20个客户端限制或(大概)40个客户端限制?如果您还没有看过,那么这里有一篇关于AMS w/SignalR基础知识的博客文章,以防您没有读过。我是移动服务工程团队的成员,我们希望进一步调查——你绝对不应该看到这种瓶颈!你能发电子邮件吗mobileservices@microsoft.com以便我们能够帮助解决您的问题?这似乎是一个错误的地方,但我们不能确定没有更多的细节在哪里。