Как убить jvm тред в продуктах Atlassian

Всем привет!

В этой статье я бы хотел рассказать, как убить jvm thread в серверных продуктах Atlassian. Я узнал об этом способе от Дениса Шестова.

Давайте сначала обсудим зачем убивать jvm тред в продуктах Atlassian.

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

Другой пример. Вы разрабатываете программу на SIL и создали бесконечный цикл. В этом случае программа будет есть процессорное время, пока ее не убьет SIL. В SIL есть параметр TTL, который отвечает за то, сколько времени программа может быть в запущенном состоянии. Этот параметр может быть установлен в часы и не хотелось бы ждать это время. Нужно убить тред, который выполняет эту программу

Убить тред можно с помощью плагина Java Melody.

Я покажу, как это работает.

Давайте напишем программу на SIL с бесконечным циклом:

while (true) {
    string a = "asd";
}

Теперь запустите программу в SIL Manager и программа будет работать бесконечно.

Теперь зайдем в Java Melody по адресу http://yourjirapath/monitoring.

Перейдем к разделу Threads и нажмем на знак +:

Теперь найдем тред, который выполняет наш бесконечный цикл:

Вы можете видеть, что в стектрейсе видны классы SIL и тред работает. Очень похоже, что это то, что нам нужно.

Теперь удалим тред. Нажмем на красный круг в последней колонке для найденного столбца:

И тред будет убит. Если мы зайдем в SIL manager, то увидим, что программа была прервана с ошибкой:

Это означает, что наша программа перестала выполнятся и процессорное время больше на нее не тратиться.

Leave a Reply

%d bloggers like this: