Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Чем убить зависший поток / 19 сообщений из 19, страница 1 из 1
28.09.2018, 15:02
    #39709889
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
Есть сторонний софт библиотека. Запускается отпределнный метод в отдельном потоку executorа. В некоторых случаях это метод может зацикливаться выжирая cpu, ram и убивая сервер. Interrupt в нем не предусмотрен. Поправить не поправят.

Как убить по timeout этот поток в executors. Пока только стартовать в отдельной jvm и убивать средаствами OS. Из минусов в отдеьлной jvm этот метод стартовать будет 2-10 минут.
...
Рейтинг: 0 / 0
28.09.2018, 15:04
    #39709890
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
Посмотри через thread dump на какой операции он обычно зависает.
...
Рейтинг: 0 / 0
28.09.2018, 15:06
    #39709892
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
Или jstack
...
Рейтинг: 0 / 0
28.09.2018, 15:12
    #39709897
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
На кривой логике. Сейчас только вручную проверять и обновлять список исключений идентификаторов объектов которые не следует обрабатывать.
Это не гарантирует отсуствие проблем. Но каждой новый шаблон документа для обработки приходится вручную проверять где он зависнет и добавлять на сервера в исключения.
Это стороняя либа без шансов что поправят.
...
Рейтинг: 0 / 0
28.09.2018, 15:16
    #39709903
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
Эту либу надо срочно вынести в отдельный микросервис. Если падает то срочно убивать процесс и рестартовать.
...
Рейтинг: 0 / 0
28.09.2018, 15:23
    #39709911
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
Она не падает, а зависает.
И перезапускать её достаточно дорого.
...
Рейтинг: 0 / 0
28.09.2018, 15:31
    #39709923
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
Выбора особо нет, только перезапускать jvm. Как вариант пускать две ноды, одна обрабатывает запросы, вторая ждет. Задетектили, что первая повисла - переключаем на вторую и перезапускаем первую и тд. в общем-то банальный файловер

https://stackoverflow.com/questions/8180747/how-to-kill-a-thread-in-java-that-is-in-state-running
...
Рейтинг: 0 / 0
28.09.2018, 15:43
    #39709944
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
в жидее можно кликнуть по потоку правой кнопкой мыши и явно его прибить. я так понимаю там какой то агент бежит который это и делает.
...
Рейтинг: 0 / 0
28.09.2018, 16:32
    #39709981
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
andreykaTв жидее можно кликнуть по потоку правой кнопкой мыши и явно его прибить. я так понимаю там какой то агент бежит который это и делает.

а идея интересно как убивает ?
...
Рейтинг: 0 / 0
28.09.2018, 16:44
    #39709997
cossack5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
lleming,

Потоки в jvm мапятся на os-потоки, поэтому можно кильнуть нативный поток средствами posix или нативным api.
...
Рейтинг: 0 / 0
28.09.2018, 16:49
    #39710002
cossack5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
Идея аттачит свой агент. Можно заюзать такой .
...
Рейтинг: 0 / 0
28.09.2018, 17:20
    #39710025
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
cossack5lleming,

Потоки в jvm мапятся на os-потоки, поэтому можно кильнуть нативный поток средствами posix или нативным api.

На практике мапятся да, но не обязаны по спецификации, в теории это могут быть green threads. Да и вообще прибить нативный поток - ну это может прокатить при тестировании, но в продакшене... а вдруг там какой-то нативный буфер выделен или лок? или еще какая неведомая фигня, поведение JVM в случае убийства потока со стороны просто-напросто undefined
...
Рейтинг: 0 / 0
28.09.2018, 19:08
    #39710098
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
Если попробовать впилить внужное место проверку isInterrupted с выбросом исключения ? с помощью bytecode instruments
тут правда легальность таких действий под вопросом
...
Рейтинг: 0 / 0
28.09.2018, 19:09
    #39710099
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
cossack5lleming,

Потоки в jvm мапятся на os-потоки, поэтому можно кильнуть нативный поток средствами posix или нативным api.
Это - зыбкая тема. А потом в перейдем на фиберы и вообще 1 поток ОС будет обслуживать
100500 java-threads. Что убивать будете.
...
Рейтинг: 0 / 0
28.09.2018, 19:11
    #39710101
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
Basil A. SidorovОна не падает, а зависает.
И перезапускать её достаточно дорого.
Тут нужно придумать внешие критерии зависания. Самое простое КМК - подключить JMX и посмотреть
чем отличается работа нормальной либы от зависнувшей. Автор говорит - выжирает ram. Значит нужен
детектор этого выжирания.

Это - вопрос к автору. Пока он не придумает детектор - ничего мы не сделам. Даже микросервис
надо как-то диагностировать.
...
Рейтинг: 0 / 0
28.09.2018, 19:25
    #39710108
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
maytonТут нужно придуматьМоё замечание касалось того факта, что вы предлагаете решение другой проблемы.
...
Рейтинг: 0 / 0
28.09.2018, 19:57
    #39710114
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
Basil A. SidorovmaytonТут нужно придуматьМоё замечание касалось того факта, что вы предлагаете решение другой проблемы.
Вариантов нет.
...
Рейтинг: 0 / 0
30.09.2018, 10:14
    #39710467
scf
scf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
lleming,

исправить байткод библиотеки, добавив метод для останова потока. Либо непосредственно в jar-файле, либо при загрузке классов через собственный java agent.

Еще вариант - решить проблему с медленным стартом и все-таки микросервис. Если медленный старт из-за того, что нужно загрузить много данных в память, то можно просто держать эти данные в отдельном микросервисе и работать с ними по сети.
...
Рейтинг: 0 / 0
30.09.2018, 10:39
    #39710472
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем убить зависший поток
llemingЕсли попробовать впилить внужное место проверку isInterrupted с выбросом исключения ? с помощью bytecode instruments
тут правда легальность таких действий под вопросом
Дружище ты можешь взять JD-GUI и продизассеблить твою волшебную библиотеку?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Чем убить зависший поток / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]