Рейтинг:1

Как диагностировать тихо умирающее Java-серверное приложение?

флаг cn

Мы запускаем кластер серверных приложений Java Spring на экземплярах AWS EC2 под управлением Centos 7. У нас есть мониторы работоспособности, и иногда срабатывает сигнал тревоги, и мы обнаруживаем, что процесс Java незаметно просто исчез. Мы ничего не можем найти ни в одном из журналов... ни в наших собственных, ни в системных журналах.У нас есть внешний «catch Throwable» вокруг нашего собственного кода, который регистрирует то, что он перехватывает, но мы запускаем Tomcat, который может иметь свои собственные потоки. Мы добавили дополнительное ведение журнала, чтобы попытаться зафиксировать момент его исчезновения, но пока это не дало никакой информации.

Я просмотрел этот вопрос: как узнать, почему процесс Java бесследно умер в Linux. Я не вижу там ничего полезного.

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

Какие-либо предложения? Мне интересно, может быть, мне следует обернуть процесс Java во внешний родительский процесс, который тщательно отслеживает и регистрирует все сигналы от дочернего процесса Java. Мне интересно, есть ли такое готовое решение, которого я еще не нашел. Любые идеи очень приветствуются.

Michael Hampton avatar
флаг cz
Как именно вы запускаете эти приложения?
CryptoFool avatar
флаг cn
Мы используем Chef Habitat, но переходим на что-то другое и не хотим трогать его настройку. Он был настолько плох в управлении процессами, хотя и предлагает сделать это, что мы отключили все его функции управления процессами. Я не хочу туда идти. Я могу остановить официально работающий сервер, а затем запустить свою собственную версию вручную или через другой менеджер процессов, если это необходимо. Я не знаю, вызовет ли такая установка ту же проблему. Если нет, то мы, по крайней мере, будем более подозрительно относиться к самой среде обитания.
CryptoFool avatar
флаг cn
Я подумал о том, что systemd может сделать для меня. На первый взгляд это казалось сложным и не обязательно полезным. Я знаю, что есть и другие менеджеры процессов. Я надеюсь найти один, предназначенный для отладки и/или устранения неполадок, подобных моей. Я программист, а не системный администратор, так что я совершенно не знаком со всем этим.
Michael Hampton avatar
флаг cz
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment.installing.nix-services.system-d
CryptoFool avatar
флаг cn
@MichaelHampton - спасибо, но мой вопрос не в том, как установить службу в systemd. Я знаю, как это сделать. Вопрос в том, позволит ли systemd управлять временем жизни моего приложения/службы, это может дать мне какое-то указание на то, почему мое приложение умерло, что я не собираюсь получать из существующих источников. Если он может это сделать, какую конфигурацию мне нужно выполнить, чтобы получить максимально возможную информацию из systemd, когда мое приложение исчезнет?

Ответить или комментировать

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