Мы запускаем 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 или другие инструменты мониторинга.