升级后Sitecore预取缓存大小不同

升级后Sitecore预取缓存大小不同,sitecore,sitecore-mvc,sitecore9,Sitecore,Sitecore Mvc,Sitecore9,我已将Sitecore从8.1升级到9.0更新2。我发现预回迁缓存有问题 在旧版本上,webdb预取缓存将达到6GB,但在升级版本上,它不会超过1.5GB Sitecore 8.1实例 Sitecore 9.0升级实例 您是否比较了w3wp进程实际消耗的内存量?看起来缓存中的项目数量相似。从您的屏幕截图中可以看出,缓存在这两种情况下都按预期工作 通过每个可缓存对象的ICacheable.GetDataLength实现来估计每个对象的缓存大小。这个值并不总是准确的,有时它实际上非常遥远。至少在以

我已将Sitecore从8.1升级到9.0更新2。我发现预回迁缓存有问题

在旧版本上,webdb预取缓存将达到6GB,但在升级版本上,它不会超过1.5GB

Sitecore 8.1实例

Sitecore 9.0升级实例


您是否比较了w3wp进程实际消耗的内存量?看起来缓存中的项目数量相似。从您的屏幕截图中可以看出,缓存在这两种情况下都按预期工作

通过每个可缓存对象的ICacheable.GetDataLength实现来估计每个对象的缓存大小。这个值并不总是准确的,有时它实际上非常遥远。至少在以前版本的Sitecore中,您可以对整个缓存大小列进行求和,得到的总和远远大于您的w3wp进程大小


如果我没记错的话,Sitecore已经更改了默认情况下对象大小的估计方式。您可能看到了这一点。

在缓存体系结构的重新设计方面投入了大量资金,我将介绍一些已经改变的内容:

1游戏规则改变者-允许重复使用可重复的不可变对象,如字符串、ID-我们现在在内存中保留了更少的现成重复对象。通过在前面提到的配置中禁用interning,您可以看到差异

2介绍Sitecore.Caching.Interfaces.ISizeTrackable接口,该接口将帮助实体更好地了解其大小-这对于PreferechData来说非常正确;它甚至会为32/64位应用程序池设置提供不同的大小,因为指针大小不同

3.引入Sitecore.Common.ITrimExcess接口,该接口允许在添加数据的主要部分后收缩集合,该接口在内部依赖于列表或哈希列表的API


总而言之,核心平台部件的预期数字要低得多,因为这些部件都是经过精心设计的:

pub不是默认的数据库,这是您的web数据库吗?是否有任何与预取缓存相关的自定义配置。另外,请查看config/sitecore/admin/showconfig.aspx并搜索Yes。我们确实有一个用于实时版本的自定义数据库,我们正在使用预取缓存。管理中的总缓存显示为3.6GB,w3wp进程消耗约9.7GB。此外,我还尝试删除预取配置common.config中的默认项和webdb.config,即使缓存大小为1.5GB,也没有任何变化。您是否更改了解决方案中的其他内容?从我在屏幕截图中看到的情况来看,实际上9.0 95653对象中缓存的项目比8.1 89916对象多。这就是为什么我不确定你是否真的在追求一个真正的问题。在我看来,这些数字仍然像是在玩智力游戏。