【发布时间】:2015-03-03 09:00:17
【问题描述】:
我有一个聊天应用程序,我必须在该应用程序中向该对话中的所有其他用户推送消息,当我将消息推送给超过 100 个的所有客户端时,信号器工作正常,但是当我遍历这 100 个连接并单独发送消息时消息在客户端接收缓慢,当我开始更快地推送消息时,我的服务器 IIS 工作人员会达到 100% 的 CPU 使用率,并且在客户端接收消息变得更慢,
所以请帮助我找到同时从 100 多个用户的信号器向特定用户发送消息的最佳方式
【问题讨论】:
-
将调试器附加到进程并找出发生了什么(可能是无限循环?)。 SignalR 应该能够轻松处理超过 1000 个连接。
-
代码执行顺利,但我的 iis 会以 100% cpu 使用率将消息一一缓慢地推送给客户端,顺便说一下,我的服务器配置是 windows server 2012,8gb ram,Xeon(R) 2.2 ghz,还好吗?
-
100% cpu 使用率表示其中一个线程存在无限紧密循环。由于您的处理器有多个内核,它仍在进行一些处理(因此响应被推送到客户端),但是由于紧密的循环正在窃取资源,它发生的速度要慢得多。恕我直言,解决 100% cpu 使用率是这里的关键。
-
我发现问题出在redis背板,当我移除redis用作背板时它工作正常,你有什么想法吗,我需要使用redis,因为我必须使用多台机器
-
Redis 背板最近已从 BookSleeve 迁移到 StackExchange.Redis,但尚未发货。您可以尝试从myget.org/gallery/aspnetwebstacknightly 构建 SignalR 2.2.0 和 Redis 背板的夜间版本,看看是否有帮助?或者,您可以等待 2.2.0 - 应该不会太久。
标签: signalr