Тайм-ауты членов кэша согласованности истекают и удаляются из кластера

Члены согласованного кэша имеют тайм-аут и удаляются из кластера в приложении Spring Hibernate Tomcat. В результате данные не синхронизируются, и все элементы кэша не обновляются одновременно. Это приложение работает в PROD, и единственное изменение, которое мы недавно сделали, - это обновление Tomcat. Это производственный вопрос. Любые предложения помогут. Благодарю.

1 ответ

Как вы говорите, элементы кэша удаляются по истечении времени ожидания или, другими словами, перестают отвечать на остальную часть кластера.

Наиболее вероятная причина этого состоит в том, что происходит сборка мусора "остановка мира" и, следовательно, тактовые импульсы, которые удерживают участника в кластере, не отправляются.

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

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

Причина этого заключается в том, что, используя вашу ситуацию в качестве примера, Tomcat предъявляет всевозможные требования к ресурсам, которые в конечном итоге вводят более широкий набор требований к памяти / сбору мусора для JVM, чем просто участие в кластере. В результате такой настройки JVM для более широких потребностей будет вводить больше компромиссов, что в конечном итоге затруднит работу JVM, в которой оптимизирован модуль Memory/GC для поддержания стабильности кластера.

Другие вопросы по тегам