Размер кэша предварительной выборки Sitecore отличается после обновления

Я выполнил обновление Sitecore с 8.1 до 9.0 Update 2. Я вижу, что есть проблема с кешем предварительной выборки.

В старой версии кеш предварительной выборки webdb будет достигать 6 ГБ, но в обновленной версии он не превышает 1,5 ГБ.

Экземпляр Sitecore 8.1 введите здесь описание изображения

Обновленный экземпляр Sitecore 9.0

введите здесь описание изображения


person Srinivas Ramakrishna    schedule 13.05.2019    source источник
comment
pub не является базой данных по умолчанию, это ваша веб-база данных? есть ли какая-либо пользовательская конфигурация, связанная с кешем предварительной выборки. также взгляните на конфигурацию /sitecore/admin/showconfig.aspx и найдите ‹database id=pub, вы предварительно загружаете то же самое?   -  person Jan Bluemink    schedule 14.05.2019
comment
Да, у нас есть собственная база данных для живой версии, и мы используем для нее кеш предварительной выборки.   -  person Srinivas Ramakrishna    schedule 14.05.2019


Ответы (2)


Были вложены огромные средства в перепроектирование архитектуры кэширования, я расскажу о нескольких вещах, которые были изменены:

1) Изменение правил игры — Sitecore.Interning.config, позволяющее повторно использовать повторяющиеся неизменяемые объекты (такие как строки, идентификаторы) — мы храним гораздо меньше дублирующихся объектов в памяти прямо из коробки. Вы можете увидеть разницу, отключив интернирование в вышеупомянутой конфигурации.

2) Внедрить интерфейс Sitecore.Caching.Interfaces.ISizeTrackable, который должен помочь сущностям лучше узнать свой размер - это очень верно для PreferechData; он даже даст вам разные размеры для настройки 32/64-битного пула приложений (поскольку размер указателя отличается).

3) Внедрить интерфейс Sitecore.Common.ITrimExcess, который позволяет сжимать коллекцию при добавлении большей части данных (внутренне опирается на TrimExcess() API для List или HashList).

Подводя итог, можно сказать, что для основных частей платформы ожидаются гораздо меньшие цифры, поскольку они были тщательно обработаны :)

person Nikolay Mitikov    schedule 21.05.2019

Вы сравнивали, сколько памяти на самом деле потребляет процесс w3wp? Похоже, у вас одинаковое количество элементов в кеше. Из того, что я вижу на ваших снимках экрана, кеш работает, как и ожидалось, в обоих сценариях.

Размер кэша каждого объекта оценивается посредством ICacheable.GetDataLength() реализации каждого кэшируемого объекта. Это значение не всегда точное, а иногда и довольно далекое. По крайней мере, в предыдущих версиях Sitecore вы могли подсчитать сумму всего столбца размера кэша и получить общую сумму, которая намного превышает размер вашего w3wp процесса.

Если я правильно помню, Sitecore изменил способ оценки размеров объектов по умолчанию. Вы, вероятно, видите эффект этого.

person mikaelnet    schedule 14.05.2019
comment
Общий кеш в админке показывает как 3,6 ГБ, а процесс w3wp потребляет около 9,7 ГБ. - person Srinivas Ramakrishna; 14.05.2019
comment
Также я попытался удалить записи по умолчанию в конфигурациях предварительной выборки (common.config и webdb.config), даже если размер кеша составляет 1,5 ГБ, и вообще нет никаких изменений. - person Srinivas Ramakrishna; 14.05.2019
comment
Изменили ли вы что-нибудь еще в своем решении? Из того, что я вижу на ваших снимках экрана, на самом деле в 9.0 кэшировано больше элементов (95 653 объекта), чем в 8.1 (89 916 объектов). Вот почему я не уверен, что вы действительно преследуете здесь настоящую проблему. Мне все еще кажется, что цифры размеров играют с разумом. - person mikaelnet; 17.05.2019