|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
Есть сторонний софт библиотека. Запускается отпределнный метод в отдельном потоку executorа. В некоторых случаях это метод может зацикливаться выжирая cpu, ram и убивая сервер. Interrupt в нем не предусмотрен. Поправить не поправят. Как убить по timeout этот поток в executors. Пока только стартовать в отдельной jvm и убивать средаствами OS. Из минусов в отдеьлной jvm этот метод стартовать будет 2-10 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 15:02 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
Посмотри через thread dump на какой операции он обычно зависает. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 15:04 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
Или jstack ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 15:06 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
На кривой логике. Сейчас только вручную проверять и обновлять список исключений идентификаторов объектов которые не следует обрабатывать. Это не гарантирует отсуствие проблем. Но каждой новый шаблон документа для обработки приходится вручную проверять где он зависнет и добавлять на сервера в исключения. Это стороняя либа без шансов что поправят. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 15:12 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
Эту либу надо срочно вынести в отдельный микросервис. Если падает то срочно убивать процесс и рестартовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 15:16 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
Она не падает, а зависает. И перезапускать её достаточно дорого. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 15:23 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
Выбора особо нет, только перезапускать jvm. Как вариант пускать две ноды, одна обрабатывает запросы, вторая ждет. Задетектили, что первая повисла - переключаем на вторую и перезапускаем первую и тд. в общем-то банальный файловер https://stackoverflow.com/questions/8180747/how-to-kill-a-thread-in-java-that-is-in-state-running ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 15:31 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
в жидее можно кликнуть по потоку правой кнопкой мыши и явно его прибить. я так понимаю там какой то агент бежит который это и делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 15:43 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
andreykaTв жидее можно кликнуть по потоку правой кнопкой мыши и явно его прибить. я так понимаю там какой то агент бежит который это и делает. а идея интересно как убивает ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 16:32 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
lleming, Потоки в jvm мапятся на os-потоки, поэтому можно кильнуть нативный поток средствами posix или нативным api. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 16:44 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
Идея аттачит свой агент. Можно заюзать такой . ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 16:49 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
cossack5lleming, Потоки в jvm мапятся на os-потоки, поэтому можно кильнуть нативный поток средствами posix или нативным api. На практике мапятся да, но не обязаны по спецификации, в теории это могут быть green threads. Да и вообще прибить нативный поток - ну это может прокатить при тестировании, но в продакшене... а вдруг там какой-то нативный буфер выделен или лок? или еще какая неведомая фигня, поведение JVM в случае убийства потока со стороны просто-напросто undefined ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 17:20 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
Если попробовать впилить внужное место проверку isInterrupted с выбросом исключения ? с помощью bytecode instruments тут правда легальность таких действий под вопросом ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 19:08 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
cossack5lleming, Потоки в jvm мапятся на os-потоки, поэтому можно кильнуть нативный поток средствами posix или нативным api. Это - зыбкая тема. А потом в перейдем на фиберы и вообще 1 поток ОС будет обслуживать 100500 java-threads. Что убивать будете. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 19:09 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
Basil A. SidorovОна не падает, а зависает. И перезапускать её достаточно дорого. Тут нужно придумать внешие критерии зависания. Самое простое КМК - подключить JMX и посмотреть чем отличается работа нормальной либы от зависнувшей. Автор говорит - выжирает ram. Значит нужен детектор этого выжирания. Это - вопрос к автору. Пока он не придумает детектор - ничего мы не сделам. Даже микросервис надо как-то диагностировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 19:11 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
maytonТут нужно придуматьМоё замечание касалось того факта, что вы предлагаете решение другой проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 19:25 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
Basil A. SidorovmaytonТут нужно придуматьМоё замечание касалось того факта, что вы предлагаете решение другой проблемы. Вариантов нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 19:57 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
lleming, исправить байткод библиотеки, добавив метод для останова потока. Либо непосредственно в jar-файле, либо при загрузке классов через собственный java agent. Еще вариант - решить проблему с медленным стартом и все-таки микросервис. Если медленный старт из-за того, что нужно загрузить много данных в память, то можно просто держать эти данные в отдельном микросервисе и работать с ними по сети. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 10:14 |
|
Чем убить зависший поток
|
|||
---|---|---|---|
#18+
llemingЕсли попробовать впилить внужное место проверку isInterrupted с выбросом исключения ? с помощью bytecode instruments тут правда легальность таких действий под вопросом Дружище ты можешь взять JD-GUI и продизассеблить твою волшебную библиотеку? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 10:39 |
|
|
start [/forum/topic.php?fid=59&fpage=39&tid=2121754]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 322ms |
total: | 470ms |
0 / 0 |