asp.net - 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 的最大大小(每个连接、主题)?
解决方案
推荐阅读
- bash - 如何忽略/还原文件内容中大小写的变化?
- c# - System.Data.Entity.QueryableExtensions.Include :对象引用未设置为实例
- angular - 替换或更改 Angular 8/9 中现有或旧的组件前缀?
- reactjs - 如何制作可以使用 React.js 捕获图像然后将其上传到 firebase 的相机?
- javascript - 为什么我在使用基于我的代码的反应时收到此错误?
- vue.js - 在 Vue 的选项卡中迭代对象
- reactjs - PrimeReact 下拉菜单有问题
- python - 通过使用matplotlib对pandas(python)中的csv数据的趋势有什么改进?
- stm32 - PGSERR 和 PGPERR 位清零
- sql - 如何解决 SQL Server 中的数据类型不兼容问题