1

我已将 Sitecore 从 8.1 升级到 9.0 Update 2。我发现预取缓存存在问题。

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

Sitecore 8.1 实例 在此处输入图像描述

Sitecore 9.0 升级实例

在此处输入图像描述

4

2 回答 2

0

在缓存架构重新设计方面进行了巨额投资,我将提出一些更改的内容:

1) 改变游戏规则 - Sitecore.Interning.config允许重用可重复的不可变对象(如字符串、ID) - 现在我们在内存中保留了更少的重复对象。您可以通过在上述配置中禁用实习来看到差异。

2) 引入Sitecore.Caching.Interfaces.ISizeTrackable应该帮助实体更好地了解它们的大小的接口——这对于 PreferechData 来说是非常正确的;它甚至会为您提供 32/64 位应用程序池设置的不同大小(因为指针大小不同)。

3) 引入Sitecore.Common.ITrimExcess允许集合在大部分数据时收缩的接口(内部依赖于List 或 HashList 的TrimExcess() API)。

总而言之 - 核心平台部件的数量要低得多,因为它们是精心制作的:)

于 2019-05-21T08:50:08.857 回答
-1

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

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

如果我没记错的话,Sitecore 已经改变了默认情况下估计对象大小的方式。你可能会看到这样的效果。

于 2019-05-14T12:39:42.513 回答