2014-12-03 5 views
2

Я использую Terracotta Enterprise Ehcache вместе с Java-приложением, но в некоторые моменты дня Terracotta начинает уделять слишком много времени, чтобы отвечать на запросы put/get, иногда блокируя потоки клиентов и запуская исключения.Terracota Ehcache Locking Client

Моя инфраструктура состоит из кластера из 5 серверов JBoss 6.2.0 и другого кластера с 4 Terracotta Enterprise Ehcache 3.7.5, который хранит большой объем данных.

Приложение делает около 10 миллионов обращений к Terracotta Ehcache в день.

  • Первоначально я использовал критерии, но когда начались проблемы, я поменял все, чтобы использовать только поисковые запросы.

  • Я попытался изменить интервал DGC, заставляя его работать чаще или даже только один раз в день, это не улучшалось.

  • Я начал с постоянного хранилища в режиме постоянной сохранности и попытался перейти на временную замену, но проблема продолжается.

  • Попытка изменить кластер Терракота для работы с 2-мя активными машинами и 2 пассивными или 4-мя активами.

  • Пробовал конфигурировать мои тайники как вечные истинные или ложные.

  • Все мои кеши безостановочно, и я попытался использовать timeoutBehavior как исключение или noop.

В принципе ни один из моих усилий, кажется, производить какие-либо значительные изменения и Терракотовая продолжает поступать в таком состоянии, когда он не может ответить на запросы больше.

Прямо сейчас единственное, что, кажется, «решает» проблему, - это перезагрузить всех клиентов.

Есть ли у кого-нибудь подобный сценарий с использованием Terracotta с такой пропускной способностью? Любые идеи о том, где искать сейчас?

ответ

0

Да, я столкнулся с аналогичной проблемой обсуждения разногласий на установке кластера терракоты. Запросы slave для get/put, используемые для получения времени и дампа потока, показали, что главная причина - блокировка. Я не помню подробностей, поскольку прошло более 4-6 месяцев. У меня было 2 варианта, то:

  • Создать собственный сервер кэша, который был бы обычай войны и будет работать под EHCache и разоблачить свой собственный пут, получить, удалять и т.д. операции, как REST конечными точками.
  • Использовать репликацию кеша в виде ehcache.

Сначала я попробовал с репликацией иск RMI, а затем с JGroups. Основанный на RMI подход работал превосходно и был очень стабильным, поэтому я решил перейти на репликацию на основе RMI, которую ehcache предоставляет OOTB. Моя настройка заключалась в том, чтобы использовать ehcache в качестве поставщика кеша для JPA с гибернацией, а решение RIX без проблем работало очень хорошо и эффективно. Это достаточно разумно, чтобы видеть, когда другие серверы в кластере спускаются и когда они появляются. Репликация является асинхронной и прозрачной. Поскольку второй подход работал хорошо, я не пробовал первый.

+0

Спасибо за ваш ответ @ Назгул, я собираюсь попробовать еще немного с кластером Terracotta Enterprise, прежде чем переключиться на репликацию через RMI, но я это рассмотрю! –