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

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

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

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

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

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

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

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

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

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

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


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