Назад | Перейти на главную страницу

Перезагрузите Tomcat на двух разных серверах одновременно

Мы запускаем Apache solr на двух серверах. К сожалению, из-за большой нагрузки на серверы индексирования (предположения) выходят из строя. Мы каждый раз вручную перезапускаем кота.

Когда я погуглил, я нашел способ, как автоматически перезапустить Tomcat, используя параметры vm

-XX:OnOutOfMemoryError="<cmd args>;
<cmd args>" 

Поэтому я считаю, что эта команда ниже перезапустит tomcat, когда каждый раз, когда мы получаем из памяти

-XX:OnOutOfMemoryError="/etc/init.d/tomcat restart"

Но как мне синхронизировать этот процесс с другим сервером. оба сервера находятся в шардинге.

Кто-нибудь может мне в этом помочь?

Вместо прямого запуска перезапуска tomcat из триггера OnOutOfMemoryError вы можете запустить простой сценарий, который будет делать это на локальном сервере и ssh на удаленном, чтобы сделать то же самое.

Я бы добавил триггер для некоторых проверок мониторинга, который просто запускает скрипт, который перезапускает tomcat в обеих системах. И, возможно, провести некоторые проверки работоспособности до и после перезапуска.

Вы можете написать эти сценарии, например, с помощью Fabric (http://www.fabfile.org/) или Рекс (http://www.rexify.org/).

Также я бы попытался выяснить, почему зависает кот. Если у него заканчивается память, может быть, вы можете дать jvm больше памяти?

Если вам нужно контролировать использование внутренней памяти jvm, вы можете использовать http://www.jolokia.org/ чтобы интегрировать его в nagios или другие инструменты мониторинга.