首页 > 解决方案 > SignalR - RedisMessageBus 过多的内存消耗

问题描述

我正在尝试使用Redis 背板在我的应用程序中横向扩展signalR ( Microsoft.AspNet.SignalR.Core 2.4.1 )。

但正如我所见,RedisMessageBus消耗了大量内存(可能是泄漏)。白天它从 200 Mb 增长到 1 Gb(大约 5 小时)

我尝试将DefaultMessageBufferSize设置为 100(或更少),但它看起来没有帮助。

public void Configuration(IAppBuilder builder)
        {
            GlobalHost.Configuration.DefaultMessageBufferSize = 100;
            ...
            builder.MapSignalR(SignalRServicePath, hubConfiguration);
        }

在那一刻,我没有任何想法为什么会发生这种情况

问:您能否帮我解决问题或提供有关此类行为的路径原因的见解?

在此处输入图像描述

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

更新。在 SignalR 源代码调查后,我发现实际上DefaultMessageBufferSize仅设置初始默认消息缓冲区大小,但不限制它。

因此,如果有大量的输入请求到服务器端的单集线器,集线器将无法处理这些请求并及时将它们发送给订阅者。我相信这是内存消耗不断增长的根本原因

问:是否可以限制 signalR messageStore 的最大大小(每个连接、主题)?

标签: asp.net.netredissignalrdotmemory

解决方案


推荐阅读