Как я могу отключить ehcache или все типы кэширования? - PullRequest
0 голосов
/ 18 ноября 2018

Hybris: 6.3.0.0-SNAPSHOT

Я провожу тестирование производительности, и мне нужно отключить кэширование.Я уже отключил кэширование базы данных (mySQL) и хотел бы отключить все формы кэширования приложений.Возможно ли это?

Я уже видел другие вопросы и предложение использовать setDisableCaching для FlexibleSearch.К сожалению, есть некоторые FlexibleSearch, которые находятся под контролем Hybris, и я не могу изменить метод напрямую.Я собираюсь переопределить его дальше, но я хочу знать, есть ли более простой способ.

Я также попытался добавить «-Dnet.sf.ehcache.disabled = true» в tomcat.generaloptions в локальной системе..properties, но приложение, кажется, просто зависает при запуске, а сервер никогда не запускается.

Дополнительный контекст: у нас есть веб-служба, которая получает 3000 записей PointOfService.Первый вызов слишком медленный, Клиент думает, что приложение не работает (возможно, истекло время ожидания).Последующие вызовы быстрее, потому что данные уже были кэшированы.Мне нужно проверить, как улучшить производительность первого звонка.

Ответы [ 4 ]

0 голосов
/ 19 ноября 2018

Новый кеш - Region Cache.

Если вы хотите отключить кэш, вы должны установить размер всего regioncache равным 0. Он не будет действительно отключен, но ничего не будет кэшироваться.

Вы можете отключить его, используя код, упомянутый в другом ответе Registry.getCurrentTenant().getCache().setEnabled(false);

Вы можете использовать старый кеш, установив в local.properties cache.legacymode=true. Однако это не отключит весь кеш.

Теперь, если ваша проблема заключается в низкой времени отклика при запросе большого количества объектов, возможно, вам нужно определить собственную область кэша и установить правильные значения в ваших свойствах:

<alias name="defaultMyObjectCacheRegion" alias="myObjectCacheRegion"/>
<bean name="defaultMyObjectCacheRegion" class="de.hybris.platform.regioncache.region.impl.EHCacheRegion">
    <constructor-arg name="name" value="MyObjectCacheRegion" />
    <constructor-arg name="maxEntries" value="${regioncache.myObjectcacheregion.maxentries}" />
    <constructor-arg name="evictionPolicy" value="${regioncache.myObjectcacheregion.evictionpolicy}" />
    <constructor-arg name="statsEnabled" value="${regioncache.stats.enabled}" />
    <constructor-arg name="exclusiveComputation" value="${regioncache.exclusivecomputation}" />
    <property name="handledTypes">
        <array>
            <value>[MyObject typecode]</value>
        </array>
    </property>

В заключение, вы не должны пытаться отключить кеш Hybris, это почти невозможно. Но вы можете легко очистить его для целей тестирования. Если у вас есть проблемы с производительностью, я предлагаю вам также посмотреть транзакцию БД. Это часто является узким местом. Смотри: https://help.hybris.com/1808/hcd/8c7387f186691014922080f2e053216a.html

0 голосов
/ 19 ноября 2018

Запустите ниже как groovy скрипт в режиме коммита из HAC

tenant.getCurrentTenant().getCache().setEnabled(false);

Чтобы включить его, измените false на true.

0 голосов
/ 19 ноября 2018

Рассматривали ли вы добавление нумерации страниц в вызов PointOfService? Пусть клиент запрашивает только 10/100 элементов одновременно. Затем клиент может впоследствии запросить первые 10, вторые 10 ... элементов. Таким образом, звонок будет намного быстрее. Кроме того, он не будет настолько перегружать ваш кеш и стрессовый сервер и базу данных. Также клиент будет гораздо безопаснее при обработке данных.

0 голосов
/ 19 ноября 2018

Вы можете вручную удалить кэш Hybris из https://localhost:9002/hac/monitoring/cache

...