Я пытаюсь использовать кэширование записи Ehcache для записи партий транзакций в мою базу данных. Мне нужно, чтобы кеш-запись оставил транзакции с 5-секундными интервалами (или чаще).Ehcache write-behind кэширование приоритета потока
Должно быть, что-то не хватает, потому что стараюсь, как я мог, это просто не сработает. Я настроил кэширование с записью, а затем загрузил сервер. Тысячи, а затем сотни тысяч транзакций позже, и после ожидания несколько минут в базе данных все еще нет. Пока я не отключу нагрузку на сервере, кэш начинает писать в базу данных.
Проблема с приоритетом потока? Есть ли способ изменить Ehcache для выполнения записи БД, даже когда сервер находится под нагрузкой?
Вот моя конфигурация:
<cache name="server.db.model.Request"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="5"
timeToLiveSeconds="5"
overflowToDisk="false"
memoryStoreEvictionPolicy="FIFO">
<cacheWriter writeMode="write_behind" maxWriteDelay="5" rateLimitPerSecond="5"
writeCoalescing="true" writeBatching="true" writeBatchSize="5000"
retryAttempts="2" retryAttemptDelaySeconds="10">
<cacheWriterFactory class="server.db.util.RequestCacheWriterFactory"/>
</cacheWriter>
</cache>
Спасибо.
Это в среде Linux/Tomcat. Мы нигде не указали нить приоритета. Закрывая нагрузку, я имею в виду, что я закрываю потоки jMeter, которые я использую, чтобы попасть на сервер. И, наконец, мы используем hibernate, согласно документации ehcache: http://ehcache.org/documentation/hibernate.html. Как ни странно, даже после того, как я отключил загрузку на сервере, мне нужно подождать еще 5 минут, прежде чем начнутся записи в базу данных. Спасибо за вашу помощь. – Tinclon
Я смущен, поэтому server.db.model.Request хранит данные в спящем режиме? Я имею в виду, что вам известно, что вы не должны использовать ehcache write-behind с кэшами спящего режима, не так ли? Кроме того, какую версию вы используете? Кроме того, это ehcache отдельно? Не Терракотовая кластеризация ... –