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

时间:2019-05-13 11:39:14

标签: sitecore sitecore-mvc sitecore9

我已经完成了将Sitecore从8.1更新到9.0 Update 2的工作。我发现预取缓存中存在问题。

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

Sitecore 8.1实例 enter image description here

Sitecore 9.0升级实例

enter image description here

2 个答案:

答案 0 :(得分:0)

在缓存体系结构的重新设计上进行了大量投资,我将介绍一些已更改的内容:

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

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

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

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

答案 1 :(得分:-1)

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

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

如果我没记错的话,Sitecore已更改默认情况下估算对象大小的方式。您可能会看到这种效果。