我已将 Sitecore 从 8.1 升级到 9.0 Update 2。我发现预取缓存存在问题。
在旧版本上,webdb 预取缓存将达到 6GB,但在升级版本上它不会超过 1.5GB。
Sitecore 9.0 升级实例
我已将 Sitecore 从 8.1 升级到 9.0 Update 2。我发现预取缓存存在问题。
在旧版本上,webdb 预取缓存将达到 6GB,但在升级版本上它不会超过 1.5GB。
Sitecore 9.0 升级实例
在缓存架构重新设计方面进行了巨额投资,我将提出一些更改的内容:
1) 改变游戏规则 - Sitecore.Interning.config允许重用可重复的不可变对象(如字符串、ID) - 现在我们在内存中保留了更少的重复对象。您可以通过在上述配置中禁用实习来看到差异。
2) 引入Sitecore.Caching.Interfaces.ISizeTrackable
应该帮助实体更好地了解它们的大小的接口——这对于 PreferechData 来说是非常正确的;它甚至会为您提供 32/64 位应用程序池设置的不同大小(因为指针大小不同)。
3) 引入Sitecore.Common.ITrimExcess
允许集合在大部分数据时收缩的接口(内部依赖于List 或 HashList 的TrimExcess() API)。
总而言之 - 核心平台部件的数量要低得多,因为它们是精心制作的:)
w3wp
您是否比较了该进程实际消耗了多少内存?看起来您在缓存中有类似数量的项目。从我在您的屏幕截图中可以看到,缓存在两种情况下都按预期工作。
每个对象的缓存大小是通过每个可缓存对象的实现来估计的。ICacheable.GetDataLength()
该值并不总是准确的,有时实际上相差甚远。至少在以前版本的 Sitecore 中,您可以对整个缓存大小列进行求和,得到的总和远大于您的w3wp
进程大小。
如果我没记错的话,Sitecore 已经改变了默认情况下估计对象大小的方式。你可能会看到这样的效果。