谁能告诉我 Visual Studio 的内存转储中概述的行为类型
是正常的?例如 StackExchange.Redis.PhysicalConnection 在包含大小(字节)上运行得那么高吗?还是真的很高?
基本上,在将我们的代码从 Session 转换为在 Azure Redis 上运行之后,我们的 Web Head 遇到了缓慢的问题(我们现在根据需要进行序列化和反序列化并存储在 Redis 缓存中),但整体性能很糟糕。
请求完成但可能需要一段时间,这是由于 Redis 的单线程性质吗?我们正在使用 Azure Redis 团队概述的配置作为最佳实践,如此处所述https://stackoverflow.com/a/28821220
我们还可以看看什么来帮助提高性能,因为当前的性能不能作为我们目前拥有的基于会话的实现(asp.net webforms/sql server/azure IaaS)的可行替代品。
PS - 序列化和反序列化确实会造成打击,我们知道 IIS 用它自己的用于非序列化数据集等的特殊内存池破坏了我们,但它不可能导致像它这样的页面加载增加 300-500%现在是给我们的。
想法赞赏!
@蒂姆·威曼
您的缓存对象有多大? 它们的大小可以不等,有一些数据集存储在 redis 中。
它们是什么类型的物体? 大多数对象是具有可变数量属性的自定义对象,有些甚至包含集合。
你用的是什么序列化器? 我们将 Newtonsoft 用于不需要 Rowstate 的任何内容,并将所需的二进制序列化程序用于需要行状态的数据集。
所有的序列化,以及后续的反序列化,都是在调用 redis 数据库 StringGet 或 StringSet 之前在代码中完成的。