|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Всем привет Есть кусок кода- который выполняется в многопоточном режиме- в чем суть Код не менялся,ничего не менялось- лишь нарастал объем данных ,которые этот код обрабатывал и вот в какой то момент я обнаруживаю что результат работы кода - условно посчиаем его в записях в бд стал 900 к ,вместо положенных 1.7 млн иду на сервер - смотрю что там - там на 100% загружены 10 ядер при этом прилоежние работу не продолжает но и не стопается ( добавил специально логи ) очень похоже на дед лок. прогнал все это дело 4 раза - всегда блочится похоже в одном и том же месте тоесть грубо говоря на 900 к записи все дедлочится и привет.Но разве такое возможно чтобы дедлок был всегда идентичен- тоесть работает приложение все норм и бац на 91231212 записи все блочится и на следующий прогон именно на том же порядковом номере . Есть еще предположение что приложение упирается в лимиты по памяти и какие то потоки не могут получить свои данные изза этого и все так же виснет хз в логах ошибок нет ни в приложении,ни от серевера,в логах бд тоже ничего по дедлоку тоже вопрос - почему раньше все работало - а сейчас нет- причем ладно бы изза увеличения даных это было где то в конце - нет же - на середине блокируется все ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 17:47 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
дедлок - это взаимная бокировка. А блокировка не потребляет 100% CPU (если конечно она не на CAS'ах). Для начала лучше подключись через jvisualvm к приложению и сними семплирование, или используй JFR, ну или по старинке - по тред-дампам посмотри где потоки чаще всего висят. А может и вообще что все эти 100% CPU - это garbage collector (это тоже должно быть видно через метрики или тот же JMX). Ну и ради эксперимента попробуй "91231212" запись обработать независимо, может дело в данных ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 18:14 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
pavel_nv Ну и ради эксперимента попробуй "91231212" запись обработать независимо, может дело в данных это рандом номер- вычислить на какой именно записи происходит не представляется возможным. вообщем при старте процесса задйствованы 10 ядер- и когда происходит нечтно похожее на дедлок - то все 10 ядер так и остаются загружены на 100% при этом дальше процесс уже не идет ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 18:43 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Да добавьте еще пару петабайт памяти, у вас же крутая контора вроде? не то что наши Рога и Копыта При дэдлоке обычно cpu не жгется, по симптомам больше похоже на livelock. GC тоже врядли, ибо он рано или поздно все же умер с OutOfMemory. Что-то более конкретное сказать не представляется возможным, ибо задача формулируется - у меня там чото не работает, я хз чо и как, но не охота выставлять себя дауном, поэтому вверну пару умных слов - потоки, дедлок, блокировки. Совет насчет VisualVm либо профайлера - верный, нужно снять треддамп и посомтреть чем заняты потоки, от этого и плясать. Без кода врядли прогресс будет в решении проблемы ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 22:22 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79 Всем привет Есть кусок кода- который выполняется в многопоточном режиме- в чем суть Вы как поток организовываете? Это контролируемый процесс типо pool executor или просто как на душу ляжет есть данные открываете новый thread? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 22:39 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Если 1.7 превратилось в 900 то это еще не факт что виновата мультипоточность. Это может быть просто баг. Тоесть нужно искать сначала простое объяснение вещам. В многопользовательской среде база тоже не обязана выдавать одно и тоже число data-rows. В базе бывают плановые ETL процессы например. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 23:37 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, >иду на сервер - смотрю что там - там на 100% загружены 10 ядер === В прошлый вопрос вы всех подняли на уши а у вас БД встала. В этот раз каспер начал проверять диски а вы опять всех на уши. Вам не доходит что надо набирать информацию...логи...дампы...а не гадать на гуще. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 00:25 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, >прогнал все это дело 4 раза - всегда блочится похоже в одном и том же месте тоесть грубо говоря на 900 к записи === то же самое что и в первый раз - БД исключили что она умирает на 900к записей? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 00:27 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton Если 1.7 превратилось в 900 то это еще не факт что виновата мультипоточность. Это может быть просто баг. Тоесть нужно искать сначала простое объяснение вещам. В многопользовательской среде база тоже не обязана выдавать одно и тоже число data-rows. В базе бывают плановые ETL процессы например. +1 Какая девичья память у ТС Две недели назад был такой же вопрос. Memory leak ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 00:39 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
вот интересно у меня на одном из проектов ПМД вколотили. так оно всегда теперь ругается когда начинаешь там сам тредами жонглировать. через экзекутор там или еще хуже. мне кажется вполне осбосновано. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 11:38 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
andreykaT вот интересно у меня на одном из проектов ПМД вколотили вот интересно, все поняли твои три буквы ПМД? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 11:46 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Sergunka asv79 Всем привет Есть кусок кода- который выполняется в многопоточном режиме- в чем суть Вы как поток организовываете? Это контролируемый процесс типо pool executor или просто как на душу ляжет есть данные открываете новый thread? Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 17:37 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, >прогнал все это дело 4 раза - всегда блочится похоже в одном и том же месте тоесть грубо говоря на 900 к записи === то же самое что и в первый раз - БД исключили что она умирает на 900к записей? бд не умирает ,она,по крайне мере в логах все норм ну и до обновления данных - все было норм- спокойно держала нагрузку такую и принимала от 1,5 и выше записей ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 17:40 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton Если 1.7 превратилось в 900 то это еще не факт что виновата мультипоточность. Это может быть просто баг. Тоесть нужно искать сначала простое объяснение вещам. В многопользовательской среде база тоже не обязана выдавать одно и тоже число data-rows. В базе бывают плановые ETL процессы например. я с тобой согласен что если бы 1.7 просто превратились в 900 к то вопросов бы я не задавал тут- проблема в том,что приложение не завершает свою работу ,при этом ядра ,нагружены на 100ку очень похоже на какую то блокировку потоков ,но как тут выше отписались при дедлоке ядра не грузятся на 100% а тут картина такая что именно на 100ку все загружено .-Отпускает только тогда когда ты стопаешь приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 17:44 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, >бд не умирает ,она,по крайне мере в логах все норм = ты выше сказал что в логах нет exception. Это все? Если бд тормозит и виснет то в логах будет тоже чисто. Не логично? Просто заремуй запись в бд и проверь опять. 2. Что значит до обновления данных. Странная фраза по отношению к бд. Есть CRUD это 4 операции. А у тебя что за фраза? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 17:48 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, mayton прав а ты нет. Просто меньше болтай и исключи влияние бд. Вот и всё ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 17:49 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, >Отпускает только тогда когда ты стопаешь приложение. == а кроме стоп крана что умеем? Профиоировать умеем, когда определяют какой метод занимает 90 процентов времени. Или какие потоки спят. Логи дядя будет приводить? Или ты в отпуске? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 17:53 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
andreykaT вот интересно у меня на одном из проектов ПМД вколотили. так оно всегда теперь ругается когда начинаешь там сам тредами жонглировать. через экзекутор там или еще хуже. мне кажется вполне осбосновано. дело в том,что код то не менялся - он работал и работал себе и тут новая дата подъехала и привет суть вообще этого приложения перегон данных из монго в постргрес Я склонялся к дед локу ,но раз при дедлоке не может быть 100% загрузки ядер ,буду сейчас вычленять опытным путем ,какой именно элемент данных вызывает это состояние приложения. пс.я б собственно тему не создавал ,но каждый прогон - это 4 часа - может тут кто мысль подкинет) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 17:55 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, >Отпускает только тогда когда ты стопаешь приложение. == а кроме стоп крана что умеем? Профиоировать умеем, когда определяют какой метод занимает 90 процентов времени. Или какие потоки спят. Логи дядя будет приводить? Или ты в отпуске? петро какой метод занимает 100 я тебе и без профилирофчика скажу - тот который и есть многопоточный) я туда накинул маркеров - так вот все идет хорошо ,где то 900к элементов обрабатываются и далее происходит что то ,что не дает никаких ошибок ни в бд,ни в приложении,ни на серваке,при этом по маркерам я вижу что метод не закончил свою работу Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
вот тут я не дожидаюсь сообщения "ждем потоки" ,что говорит,что потоки чем то заняты мб это livelock ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 17:59 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Для поиска проблемы нужно всего две вещи: 1. Определить какие потоки грузят 2. И на какой строке Я так понимаю что с 1ым проблем нет. Если есть, то в Линухе можно выводить потоки и насколько они загружают CPU с помощью top (в интернетах ищем по linux lightweight processes). Там же мы можем увидеть ID потока, который потом можно сопоставить с тем что выводит thread dump. Они правда выводят в разных системах исчисления, нужно будет пересчитать. Ну и на какой строке можно легко определить все тем же thread dump'ом: Код: powershell 1.
Ну а там уже по строке кода должно быть понятно. Если не понятно - нужно нам предоставить кусок кода который грузит. Может оказаться все тот же GC как уже предлагали выше, это будет свидетельствовать что создается слишком много объектов. Используется ли Hibernate для работы с БД и, если да, очищается ли его сессия? Также обычно СУБД позволяют определить какие записи заблокированы, какие запросы счас выполняются и пр. Это тоже может натолкнуть на мысли. В общем, @asv79, нужно чтоб ты хоть как-то начал диагностировать проблему. Пока звучит будто все телодвижения были нерешительны и наугад. Из вопроса даже не понятно - это java процесс вообще грузит CPU? авторпетро какой метод занимает 100 я тебе и без профилирофчика скажу - тот который и есть многопоточный) Нужно знать точно строку. И нужно понимать это просто java код который ходит циклами, или это системный вызов. автордело в том,что код то не менялся - он работал и работал себе и тут новая дата подъехала и привет Значит он всегда работал неверно, и проблема проявляется только при определенных условиях/объемах данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 18:00 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
авторпс.я б собственно тему не создавал ,но каждый прогон - это 4 часа - может тут кто мысль подкинет)Стоит уменьшить кол-во выделяемой памяти JVM, тогда проблема скорей всего воспроизведется раньше. Еще как вариант - увеличить кол-во потоков, но это усложнить последующий анализ. PS: Хм.. Я не всегда могу редактировать свои сообщения? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 18:27 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, >который и есть многопоточный) Я не ожидал что у тебя внутри метода нет подметодов каждый со своим временем. ))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 18:41 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev автордело в том,что код то не менялся - он работал и работал себе и тут новая дата подъехала и привет так объем не изменился по сути 17 гиг против 17.5,а вот что то в данных не то - видимо это и есть причина сейчас буду вычленять проблему пс.сейчас я прогоню заново и пойму хотя бы на каком элменте происходит эта проблема ибо всегда оно в одном и том же месте- далее я сделаю прогон тех элементов которые попадают в этот пул( там 8 потоков - каждый берет в процес по элементу) прогоню отдельно каждый из них и найду хотя бы тот элемент ,который вызывает эту проблему ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 18:44 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Ты боишься внутри расставить маркеры? Тебе уже 4 мембера сказали "работай". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 18:45 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, >который и есть многопоточный) Я не ожидал что у тебя внутри метода нет подметодов каждый со своим временем. ))))))) все там есть,петро не мешай плиз в этой теме - дай люди со знаниями накинут варинты проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 18:46 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, >который и есть многопоточный) Я не ожидал что у тебя внутри метода нет подметодов каждый со своим временем. ))))))) все там есть,петро не мешай плиз в этой теме - дай люди со знаниями накинут варинты проблемы. Дак тебе выше чел сказал ЧТО НУЖНО ЗНАТЬ ТОЧНО СТРОКУ.)))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 18:49 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev авторпс.я б собственно тему не создавал ,но каждый прогон - это 4 часа - может тут кто мысль подкинет) PS: Хм.. Я не всегда могу редактировать свои сообщения? память тут к сожалению не причем-я тоже думал что мы упираемся в лимиты - накинул памяти и все равно состояние это возникает в одном и том же месте- я думаю это какие то проблемы с данными ,так как раньше все работало с такими же объемами и не было никаких проблем. Тоесть если бы теория памяти была верна - мы бы при увеличении или уменьшении получали это состояние в разный момент времени- но оно всегда одно и тоже- точней не время а именно последние логи - обработка такого то элемента и привет подвисание ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 18:51 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
ТС Будет очень смешно если опять виновата бд гражданин джун. А у вас мания преследования петро пошла). Работай! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 18:52 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Для поиска проблемы нужно всего две вещи: 1. Определить какие потоки грузят 2. И на какой строке Я так понимаю что с 1ым проблем нет. Если есть, то в Линухе можно выводить потоки и насколько они загружают CPU с помощью top (в интернетах ищем по linux lightweight processes). Там же мы можем увидеть ID потока, который потом можно сопоставить с тем что выводит thread dump. Они правда выводят в разных системах исчисления, нужно будет пересчитать. Ну и на какой строке можно легко определить все тем же thread dump'ом: Код: powershell 1.
Ну а там уже по строке кода должно быть понятно. Если не понятно - нужно нам предоставить кусок кода который грузит. Может оказаться все тот же GC как уже предлагали выше, это будет свидетельствовать что создается слишком много объектов. Используется ли Hibernate для работы с БД и, если да, очищается ли его сессия? Также обычно СУБД позволяют определить какие записи заблокированы, какие запросы счас выполняются и пр. Это тоже может натолкнуть на мысли. В общем, @asv79, нужно чтоб ты хоть как-то начал диагностировать проблему. Пока звучит будто все телодвижения были нерешительны и наугад. Из вопроса даже не понятно - это java процесс вообще грузит CPU? спасибо за развернутый овет- сейчас получу это состоние блокировки и сделаю все что вы выше описали ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 18:55 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Из Монго в Постгрес, говоришь. Вариант: в Постгрес в запрос передаются какие-то объекты, от которых плохеет постгресовому драйверу. Сталкивался с таким, когда из скриптов в Nashorn вызывал JdbcTemplate, и вместо джавских дат и чисел приходили nashorn-овые. Кандидат на такой случай -- код вида statement.setObject(num, objFromMongo), когда типы bind-переменных определяются неявно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 19:03 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Alexander A. Sak Из Монго в Постгрес, говоришь. Вариант: в Постгрес в запрос передаются какие-то объекты, от которых плохеет постгресовому драйверу. Сталкивался с таким, когда из скриптов в Nashorn вызывал JdbcTemplate, и вместо джавских дат и чисел приходили nashorn-овые. Кандидат на такой случай -- код вида statement.setObject(num, objFromMongo), когда типы bind-переменных определяются неявно. объекты все одинаковые - тоесть если бы было не так оно бы не работало и раньше но кому то плохееет явно - что метод не завершается ,а вот кому надо понять -так как в логах везде тишь да гладь да божья благодать ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 19:09 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79 пропущено... все там есть,петро не мешай плиз в этой теме - дай люди со знаниями накинут варинты проблемы. Дак тебе выше чел сказал ЧТО НУЖНО ЗНАТЬ ТОЧНО СТРОКУ.)))))) человек,а не ты- ты то сиди ровно и не мешай людям общаться пс.давно пора администрации форума сделать функцию Unwanted чтобы петро забыл сюда дорогу) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 19:55 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Код: java 1.
набрал топ - получил процесс который 900% занимает ЦПУ команда выше не работает - Код: java 1. 2. 3. 4. 5. 6.
ни одна из этих команд не приводит к успеху какой то конфликт с монго сервером судя по всему Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 20:03 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Джаву откуда запускаешь? У нее в каталоге /bin этот jcmd должен быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 20:17 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp пропущено... Дак тебе выше чел сказал ЧТО НУЖНО ЗНАТЬ ТОЧНО СТРОКУ.)))))) человек,а не ты- ты то сиди ровно и не мешай людям общаться пс.давно пора администрации форума сделать функцию Unwanted чтобы петро забыл сюда дорогу) 22298979 Долго врубался чтобы вычислить что бд виновата? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 20:31 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Alexander A. Sak Джаву откуда запускаешь? У нее в каталоге /bin этот jcmd должен быть. я запускаю ctl сервис ,хз где там джава спряталась) но она точно есть ибо приложение работает ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 21:25 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79 пропущено... человек,а не ты- ты то сиди ровно и не мешай людям общаться пс.давно пора администрации форума сделать функцию Unwanted чтобы петро забыл сюда дорогу) 22298979 Долго врубался чтобы вычислить что бд виновата? бд тут не причем 900% цпу висит на процессех прилоежния где то рядом пострегрес с 1.3 % так что иди спать конь педальная) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 21:27 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp бд тут не причем 900% цпу висит на процессех прилоежния где то рядом пострегрес с 1.3 % так что иди спать конь педальная) То есть, если бд начинает писать 1 запись в сек по разным причинам, то у тебя потоки не будут тормозить что ли? Они 1 процент ЦПУ займут? Ну скажи хоть пару умных слов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 21:52 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, не знаю как насчет jcmd но на моем опыте обычно используется jstack <PID> - снять тред-дамп jmap <PID> - снять хип-дамп Если таких команд нет, и, вдруг приложение крутится в докере - то какой образ используется? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 22:21 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Мое имхо, что автору топика не следует пудрить мозги про дамп памяти, карту памяти, дамп кучи и т.д. Это слишком круто для него. Надо искать ошибку более простыми способами. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 22:43 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
автор900% цпу висит на процессех прилоежния где то рядом пострегрес с 1.3 %Ок, ну эт хорошо, значит локализовали что это хотя бы наше приложение. А дальше нужно искать уже точно строку кода, вполне возможно что там какой-то баг который в вечный цикл вводит приложение. Это очень быстро отыскивается с помощью thread dump'a. И этому нужно обязательно обучиться - снимать дампы это одно из первых и лучших средств траблшутинга. Поэтому лучше сразу потратить время и разобраться. авторCommand 'jcmd' not found, but can be installed with:jcmd устанавливается вместе с JDK. Т.е. находится в JAVA_HOME/bin, ищи там. Однако в комплект JRE эта утилита не входит, поэтому если у тебя именно JRE - се ля ви. Нужно будет поставить JDK. pavel_nvне знаю как насчет jcmd но на моем опыте обычно используется jstack <PID> - снять тред-дамп jmap <PID> - снять хип-дампЭти тоже входят только в JDK, но на сегодняшний день jcmd их вытесняет. Она в себя включает эти две возможности, а также многие другие: jcmd helpThe following commands are available: Compiler.CodeHeap_Analytics Compiler.codecache Compiler.codelist Compiler.directives_add Compiler.directives_clear Compiler.directives_print Compiler.directives_remove Compiler.perfmap Compiler.queue GC.class_histogram GC.finalizer_info GC.heap_dump GC.heap_info GC.run GC.run_finalization JFR.check JFR.configure JFR.dump JFR.start JFR.stop JVMTI.agent_load JVMTI.data_dump ManagementAgent.start ManagementAgent.start_local ManagementAgent.status ManagementAgent.stop Thread.print VM.class_hierarchy VM.classloader_stats VM.classloaders VM.command_line VM.dynlibs VM.events VM.flags VM.info VM.log VM.metaspace VM.native_memory VM.print_touched_methods VM.set_flag VM.stringtable VM.symboltable VM.system_properties VM.systemdictionary VM.uptime VM.version help ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 22:53 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, я думаю тут коллегам больше интересно самим посмотреть тред-дамп топик стартера и пополнить свой багаж знаний (как делать не надо), чем решить конкретную проблему топик-стартера ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 22:56 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
pavel_nv, Может быть ты и прав. Только ТС обычно не делает то что его просят. Поживем увидим. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 23:09 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, >Ок, ну эт хорошо, значит локализовали что это хотя бы наше приложение. = не думаю что эти две цифры локализуют AppServer и исключают обе БД как проблемные. Имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 23:12 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79 Alexander A. Sak Джаву откуда запускаешь? У нее в каталоге /bin этот jcmd должен быть. я запускаю ctl сервис ,хз где там джава спряталась) но она точно есть ибо приложение работает Непонятно. Ты привел слово которое слишком .... слишком много раз гуглится и по нему нет никакой конкретики. Это оно? Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Тыж понимаешь когда затаскиваешь в форум Java связи с какой-то специфичной технологии - то надо об этом обязательно сказать. Иначе - люди просто не знают о чем речь идет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 19:50 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton asv79 пропущено... я запускаю ctl сервис ,хз где там джава спряталась) но она точно есть ибо приложение работает Непонятно. Ты привел слово которое слишком .... слишком много раз гуглится и по нему нет никакой конкретики. Это оно? Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Тыж понимаешь когда затаскиваешь в форум Java связи с какой-то специфичной технологии - то надо об этом обязательно сказать. Иначе - люди просто не знают о чем речь идет. да это именно оно - приложение запускается sudo systemctl start app.service ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 20:34 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
А ну набери Код: java 1.
Там будут опции. Может command-line. Вот у меня например memcached показывает. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Там и путь к скрипту старта. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 20:42 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
далее я начал вычленять элемент - на котором все стопорится- вроде нашел ,по крайне мере по логам - он последний берется в работу и все виснет я значит беру этот элемент и удаляю из списка,но один хрен приложение постигает таже участь приблизительно на том же месте тред дамп я снять не могу - как выше заметили нужен установленный jdk,а его нет и установить не дадут что я начал делать дальше - я прогнал локально - тоесть на винде,на другой системе ,на другой версии постгрес и опять уперся рогом ровно в тоже самое место ,что и на серваке... при этом вообще не понятно что проиходит- так как в логах тишина сейчас временно убрал многопоточку - посмотрим что будет в обычном режиме - упрется в тоже место или нет сейчас я уже думаю что бд - вероятно не может такое количество засейвить- и где то что то превращается в вечно ждущеее состояние если в обычном режиме все пройдет гладко- значит буду уменьшать количество потокв. пс.как снять тред дамп с ctl службы я завтра спрошу у админов- может есть какой то иной способ ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 20:42 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev автор900% цпу висит на процессех прилоежния где то рядом пострегрес с 1.3 % авторCommand 'jcmd' not found, but can be installed with:jcmd устанавливается вместе с JDK. Т.е. находится в JAVA_HOME/bin, ищи там. Однако в комплект JRE эта утилита не входит, поэтому если у тебя именно JRE - се ля ви. Нужно будет поставить JDK. pavel_nvне знаю как насчет jcmd но на моем опыте обычно используется jstack <PID> - снять тред-дамп jmap <PID> - снять хип-дампЭти тоже входят только в JDK, но на сегодняшний день jcmd их вытесняет. Она в себя включает эти две возможности, а также многие другие: jcmd helpThe following commands are available: Compiler.CodeHeap_Analytics Compiler.codecache Compiler.codelist Compiler.directives_add Compiler.directives_clear Compiler.directives_print Compiler.directives_remove Compiler.perfmap Compiler.queue GC.class_histogram GC.finalizer_info GC.heap_dump GC.heap_info GC.run GC.run_finalization JFR.check JFR.configure JFR.dump JFR.start JFR.stop JVMTI.agent_load JVMTI.data_dump ManagementAgent.start ManagementAgent.start_local ManagementAgent.status ManagementAgent.stop Thread.print VM.class_hierarchy VM.classloader_stats VM.classloaders VM.command_line VM.dynlibs VM.events VM.flags VM.info VM.log VM.metaspace VM.native_memory VM.print_touched_methods VM.set_flag VM.stringtable VM.symboltable VM.system_properties VM.systemdictionary VM.uptime VM.version help я могу локально прогнать впринципе эти данные,локально у меня установлен jdk ,правда не линукс ,а винда. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 20:49 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Там - обычный bash-script. По нему - найдешь где установлена JDK/JRE. Найдешь - дальше будем дейстовать по обстановке. Вполне вероятно что JDK не установлен. Тогда надо будет его доустановить. apt install ... e.t.c. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 20:50 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton Там - обычный bash-script. По нему - найдешь где установлена JDK/JRE. Найдешь - дальше будем дейстовать по обстановке. Вполне вероятно что JDK не установлен. Тогда надо будет его доустановить. apt install ... e.t.c. нет прав у меня на установку я сейчас локально запустил - у меня тут есть jdk ,id процесса,который грузит ядра я увижу в виндовском диспетчере задач - не уверен что это именно тот id,который можно будет посдавить в jcmd ,но попробуем где то через два часа система стопорнется и попробуем пс.если кто то знает как на винде найти процессы и сколько они откушали ресурсов - подскажите пож ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 21:13 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Джаву не обязательно устанавливать из пакетов. Можно положить в своем home, и в конфигах запуска Томката указать путь к своей джаве. В Убунте например это в /etc/default/tomcatN ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 21:19 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton Там - обычный bash-script. По нему - найдешь где установлена JDK/JRE. Найдешь - дальше будем дейстовать по обстановке. Вполне вероятно что JDK не установлен. Тогда надо будет его доустановить. apt install ... e.t.c. посмотрел этот скрипт - про джаву там ничего нет - только настройки с которыми запускается приложуха набрал java --version Код: java 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 21:20 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
А ты убедился что у тебя на самом деле нет JDK на сервере? Как ты об этом узнал? JAVA_HOME нашел? С systemctl нужно разобраться и обязательно научиться им пользоваться. авторя могу локально прогнать впринципе эти данные,локально у меня установлен jdk ,правда не линукс ,а винда. Ну локально ты и продебажить нормально можешь :) Раз нашел записи которые вредят - можно только их и оставить в БД чтоб быстрей воспроизвести проблему. авторid процесса,который грузит ядра я увижу в виндовском диспетчере задач - не уверен что это именно тот id,который можно будет посдавить в jcmdПросто выполняешь jcmd - он выводит список жава процессов. авторсейчас я уже думаю что бд - вероятно не может такое количество засейвить- и где то что то превращается в вечно ждущеее состояниеВечно ждущее будет то и делать что ждать. А не отъедать CPU. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 21:21 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 21:28 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev А ты убедился что у тебя на самом деле нет JDK на сервере? Как ты об этом узнал? JAVA_HOME нашел? С systemctl нужно разобраться и обязательно научиться им пользоваться. авторя могу локально прогнать впринципе эти данные,локально у меня установлен jdk ,правда не линукс ,а винда. авторid процесса,который грузит ядра я увижу в виндовском диспетчере задач - не уверен что это именно тот id,который можно будет посдавить в jcmdПросто выполняешь jcmd - он выводит список жава процессов. авторсейчас я уже думаю что бд - вероятно не может такое количество засейвить- и где то что то превращается в вечно ждущеее состояниеВечно ждущее будет то и делать что ждать. А не отъедать CPU. к сожалению запииси ,на которых все останаливвалось - были убраны из списка- но приложение все равно виснет где то +- в том же месте . По серваку я думаю что там нет jdk - собственно как набираешь jcmd тебе линукс сразу предлагает установить его,но у меня нет прав на это судя по всему да и по шапке можно за такое получить- лучше локально найду) мои знания по систем ctl пока ограничиваются лишь тремя командами ,старт/стоп и статус) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 21:31 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Удивительно,но все есть в диспетчере задач и pid,и процессорные ресурсы,им потребляемые и даже память - pid совпадает с jps трекром ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 21:42 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79 что я начал делать дальше - я прогнал локально - тоесть на винде,на другой системе ,на другой версии постгрес и опять уперся рогом ровно в тоже самое место ,что и на серваке... при этом вообще не понятно что проиходит- так как в логах тишина Так сделай локально семплирование, или тред-дамп, если локально проблема тоже воспроизводится. может там какой нибудь хибернейт с кучей связей и делаются dirty check проверки миллионов записей... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 21:46 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79 mayton Там - обычный bash-script. По нему - найдешь где установлена JDK/JRE. Найдешь - дальше будем дейстовать по обстановке. Вполне вероятно что JDK не установлен. Тогда надо будет его доустановить. apt install ... e.t.c. нет прав у меня на установку Нади где она лежит. И утилиту jcmd Код: sql 1. 2.
Конфигурируй path,classpath. И запускай javac и утилиты. Вот фрагмент моего конфигуратора который я запускаю для Apache Cassandra. Он мне нужен чтоб переключаться с 11 java на 8. Просто Кассандра так написана что ей нужна пока восьмерка. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 21:53 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
pavel_nv asv79 что я начал делать дальше - я прогнал локально - тоесть на винде,на другой системе ,на другой версии постгрес и опять уперся рогом ровно в тоже самое место ,что и на серваке... при этом вообще не понятно что проиходит- так как в логах тишина Так сделай локально семплирование, или тред-дамп, если локально проблема тоже воспроизводится. может там какой нибудь хибернейт с кучей связей и делаются dirty check проверки миллионов записей... щас сделаю тред дамп- как только поймаю это состояние ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 21:57 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton asv79 пропущено... нет прав у меня на установку Нади где она лежит. И утилиту jcmd Код: sql 1. 2.
Конфигурируй path,classpath. И запускай javac и утилиты. Вот фрагмент моего конфигуратора который я запускаю для Apache Cassandra. Он мне нужен чтоб переключаться с 11 java на 8. Просто Кассандра так написана что ей нужна пока восьмерка. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
майтон я локально щас воспроизведу проблему и сниму тред дамп на сервере у меня нет прав - да и не приветствуется у нас эта самодеятельность. ПРоще и спокойней на локальной машине все это найти . ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 22:08 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Попробуй. Но перформанс issue обычно очень капризные. Может быть даже такой кейс что локально она не воспроизведется. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 22:10 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton Попробуй. Но перформанс issue обычно очень капризные. Может быть даже такой кейс что локально она не воспроизведется. сейчас у меня на серваке - идет процес но в одном потоке локально многопоточка если в одном потоке все будет ок- то я даже парится не буду ибо задача одноразовая - запустил получил дамп постгрес и на этом все- приложение можно удалять,так что пох что вместо 3 часов будет 24,главно чтоб сбоев не было - ведь эта шляпа работала безотказно какое то время - я представляю если бы такое вылезло в час X - когда мы будем переводить систему на новое ядро ,даже страшно подумать что бы было- ведь на ресерч этой шляпы нужно на каждый заход по 3 часа( формировка контекста) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 22:17 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Делай однопоточное приложение и закрывай этот баг. Тебя-ж никто не просит это делать 3 часа? Вот когда поросят - тогда и поднимешь отдельную story. Оптимизация там.. Параллелизмы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 23:13 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
сделал тред дамп- подскажите спецы что тут не так и почему виснет приложение Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775. 776. 777. 778. 779. 780. 781. 782. 783. 784. 785. 786. 787. 788. 789. 790. 791. 792. 793. 794. 795. 796. 797. 798. 799. 800. 801. 802. 803. 804. 805. 806. 807. 808. 809. 810. 811. 812. 813. 814. 815. 816. 817. 818. 819. 820. 821. 822. 823. 824. 825. 826. 827. 828. 829. 830. 831. 832. 833. 834. 835. 836. 837. 838. 839. 840. 841. 842. 843. 844. 845. 846. 847. 848. 849. 850. 851. 852. 853. 854. 855. 856. 857. 858. 859. 860. 861. 862. 863. 864. 865. 866.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 23:50 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton Делай однопоточное приложение и закрывай этот баг. Тебя-ж никто не просит это делать 3 часа? Вот когда поросят - тогда и поднимешь отдельную story. Оптимизация там.. Параллелизмы. проблема в том ,что приложение писал наш тим лид- я думаю ему не очень понравится тот факт ,что я снес его многопоточность к херам но по факту ты прав - нет никаких требований вообще,кроме того,чтобы приехало как можно больше данных пс.сделал тред дамп - хз что там не так -судя по всему все таки дед лок? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 00:12 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, у тебя в HashMap, который многопоточность не умеет, пишет куча потоков: https://www.google.com/search?q=hashmap infinite loop ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 00:17 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Андрей Панфилов asv79, у тебя в HashMap, который многопоточность не умеет, пишет куча потоков: https://www.google.com/search?q=hashmap infinite loop где? какая строчка и если не сложно покажи как ты это увидел пож ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 00:26 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 00:28 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79 mayton Делай однопоточное приложение и закрывай этот баг. Тебя-ж никто не просит это делать 3 часа? Вот когда поросят - тогда и поднимешь отдельную story. Оптимизация там.. Параллелизмы. проблема в том ,что приложение писал наш тим лид- я думаю ему не очень понравится тот факт ,что я снес его многопоточность к херам но по факту ты прав - нет никаких требований вообще,кроме того,чтобы приехало как можно больше данных пс.сделал тред дамп - хз что там не так -судя по всему все таки дед лок? Сложно сказать. Пока я не заметил какого-то единого монитора чтоб все прям потоки на него зацепились. Но вот я-бы обратил внимание на вот это удаление. Код: java 1. 2. 3. 4. 5. 6.
Что здесь происходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 00:35 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Андрей Панфилов asv79, Код: java 1. 2. 3.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
я правильно понимаю что мне нужно вот эти две хешмапы Код: java 1. 2. 3.
поменять на concurrent и все будет норм? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 00:39 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton asv79 пропущено... проблема в том ,что приложение писал наш тим лид- я думаю ему не очень понравится тот факт ,что я снес его многопоточность к херам но по факту ты прав - нет никаких требований вообще,кроме того,чтобы приехало как можно больше данных пс.сделал тред дамп - хз что там не так -судя по всему все таки дед лок? Сложно сказать. Пока я не заметил какого-то единого монитора чтоб все прям потоки на него зацепились. Но вот я-бы обратил внимание на вот это удаление. Код: java 1. 2. 3. 4. 5. 6.
Что здесь происходит? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 00:40 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, а нет, с таким кодом (раз карты не шарятся) больше похоже что в e.getStep() приходит 0 и оно в бесконечный цикл уходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 00:47 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Андрей Панфилов asv79, а нет, с таким кодом (раз карты не шарятся) больше похоже что в e.getStep() приходит 0 и оно в бесконечный цикл уходит. очень похоже на бесконечный цикл - каково решение 0 проверять степ на 0 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 00:49 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, да кто же знает какая там у тебя логика, написал 100.0 - оно вместо java.lang.ArithmeticException стало Infinity отдавать, а может там вообще отрицательные значения ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 01:01 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79 Андрей Панфилов asv79, а нет, с таким кодом (раз карты не шарятся) больше похоже что в e.getStep() приходит 0 и оно в бесконечный цикл уходит. очень похоже на бесконечный цикл залез в бд есть 4 записи с step=0 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 01:04 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Андрей Панфилов asv79, да кто же знает какая там у тебя логика, написал 100.0 - оно вместо java.lang.ArithmeticException стало Infinity отдавать, а может там вообще отрицательные значения думаю ты прав- все на это и указывает что система на какой то момент уходит в бесконечный цикл в базе имеется 4 таких записи с нулевым step видимо я на них и напарывался - и появились они недавно,так как раньше просто не было такой проблемы сейчас закинул тернарник если 0,то ставим 1,посмотрим что будет ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 01:07 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, А в отладчике нажать кнопку Стоп и увидеть что код "в бесконечном цикле" не работает что ли? Ну или то что вызов myFunctionWhile() занимает 100 процентов времени ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 07:16 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
>"в базе имеется 4 таких записи с нулевым step" = как неожиданно то. Не утечка памяти. И не блокировка потоков. А просто БД виновато.)) ... Если причина в этом, то в нормальных фирмах не может в бд появится ноль из за ограничений модели. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 07:31 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Это к моему комментарию о том что надо искать простое объяснение бага. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 09:07 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp >"в базе имеется 4 таких записи с нулевым step" = как неожиданно то. Не утечка памяти. И не блокировка потоков. А просто БД виновато.)) ... Если причина в этом, то в нормальных фирмах не может в бд появится ноль из за ограничений модели. это побочный эфект миграции из монго в постгрес.Тут надо задать вопрос деятелем ,отвечающим за монго данные,почему в монго в step лежит 0 ну и хороший пример того,что лучше итерацию - если вы используете какие то переменные для нее - проверить на 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 09:49 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, А в отладчике нажать кнопку Стоп и увидеть что код "в бесконечном цикле" не работает что ли? Ну или то что вызов myFunctionWhile() занимает 100 процентов времени про бесконечный цикл ты конечно загнул - сейчас то легко говорить - когда нашли причину. Собственно ты там выше что нам пел как соловей- БАЗА БАЗА БАЗА ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 10:04 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, Модель странная само собой. Но почему ты полностью игнорируешь в топиках работу с бд, и влияние бд на проект, это вопрос лично к тебе. Ведь второй уже топик где у тебя отвращение к субд. Не было ответов на вопрос - как вырубить из юз кейса влияние обоих бд - как найти самую часто вызываемую или самую длительную функцию (зацикливание) - почему не нажал кнопку Стоп выполнения в отладке - почему в проекте нед логирования (мы не видели) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 10:09 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, А в отладчике нажать кнопку Стоп и увидеть что код "в бесконечном цикле" не работает что ли? Ну или то что вызов myFunctionWhile() занимает 100 процентов времени про бесконечный цикл ты конечно загнул - сейчас то легко говорить - когда нашли причину. Собственно ты там выше что нам пел как соловей- БАЗА БАЗА БАЗА Ты и сейчас не знаешь как это сделать. Готовь грабли на след раз ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 10:12 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Вот тут совершенно идиотский ответ ТС на просьбу дать самую тяжелую функцию. 22310274 https://ru.m.wikipedia.org/wiki/Профилирование_(информатика) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 10:20 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Модель странная само собой. Но почему ты полностью игнорируешь в топиках работу с бд, и влияние бд на проект, это вопрос лично к тебе. Ведь второй уже топик где у тебя отвращение к субд. Не было ответов на вопрос - как вырубить из юз кейса влияние обоих бд - как найти самую часто вызываемую или самую длительную функцию (зацикливание) - почему не нажал кнопку Стоп выполнения в отладке - почему в проекте нед логирования (мы не видели) про модель понятно - там все делалось на коленке как найти самую частую и длительную функцию я не знаю - было бы неплохо если бы рассказал ( без сарказма) логирования есть ,но минимальное почему не нажал стоп? потому что я думал что проблема вообще в не этом - сначала думал на память,потом на дедлок и тд,но только не на замкнутый цикл - ну и собственно там настолько сложная вложенность - что я сомневаюсь смог бы я увидеть это ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 10:28 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, >как найти самую частую и длительную функцию я не знаю - было бы неплохо если бы рассказал ( без сарказма) = я знаю как в шарпе и постгре. Тут не знаю. Профи подскажут. >почему не нажал стоп? потому что я думал что проблема вообще в не этом ==))))))))))))))) Я так и думал. Тебе некогда было. Ты за петро гонялся. Я эту кнопу очень часто нажимаю. Как без них то. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 10:34 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
asv79, >настолько сложная вложенность - что я сомневаюсь смог бы я увидеть это = показывай.... Вместе со стеком. Чем занят комп. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 10:36 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Не верю что тут никто не профилировал java по тяжести методов вызовов. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 10:38 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
OFF/2 Что касается профилировки в шарпе и посгри Постгри - выставить флаг log_min_duration_statement=3000 В логах бут все тяжелые запросы более 3сек Шарп - IDE - Analyze - Perfofmance Profiler - указать проект. Получем ДЕРЕВООБРАЗНЫЙ вид всех вызываемых методов с тяжестью-временем. Java -? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 11:07 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Постгри - выставить флаг log_min_duration_statement=3000 В логах бут все тяжелые запросы более 3сек А какой смысл вкладывается в duration? В SQL-Запросах есть фаза execution когда данные сортируются джойнятся и группируются. И есть фаза fetch когда курсор уже начинает выдавать в сеть строки row-by-row. У Стаса КМК - имеет место второй тип нагрузки когда execution очень быстрый. Но долго занимает fetch. Он же там всю базу куда-то переливает. Тоесть если фильтровать по log_min_duration_statement то там может быть ничего и не будет. Т.к. фаза исполнения курсора (ожидание его до выдачи первой строки) будет быстрой. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 11:29 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton, Выше было Офф пополам. Это значит вопрос не стаса а Профилирование "чем занят комп". Вопрос как это сделать в java?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 11:41 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton А какой смысл вкладывается в duration? ... И есть фаза fetch когда курсор уже начинает выдавать в сеть строки row-by-row. AFAIK постгрес не Oracle, он все одним куском шлет. p.s. могу заблуждаться ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 11:42 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Не вникая в тонкости можно представить что в бесконечном цикле идет запрос select 1 from dual ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 11:44 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev mayton А какой смысл вкладывается в duration? ... И есть фаза fetch когда курсор уже начинает выдавать в сеть строки row-by-row. AFAIK постгрес не Oracle, он все одним куском шлет. p.s. могу заблуждаться По разному. Там кажется зависит от опций ResultSet. У меня даже был баг когда jdbc драйвер PG вызывал OOM Exception. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 11:49 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Возвращаемся к профилированию тяжелых процедур. Вариант1 Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Инструмент - JFR https://www.baeldung.com/java-flight-recorder-monitoring ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 12:13 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Я думал, что проблема не там(с) - давно так не смеялся,до слез фактически. Фраза просто в меморис. Действительно - зачем дебажить, взглянул разок на код и понятно как он работает) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 12:33 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Не верю что тут никто не профилировал java по тяжести методов вызовов. в бою это нафиг не уперлось: - для знакомого кода достаточно пары-тройки дампов потоков, чтобы "угадать" что там происходит - для новичков какой-нить flamegraph подойдет ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 14:39 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Что то неверится. Чем плохо тут даже если повезет найти продуктовую среду, к которой удастся подключиться этой хренью (давно видели врубленный JMX-то?) через пачку VPN и джамп-хосты, то оно жаву завалит еще до отображения первых картинок, поэтому для прода основной инструмент - это дампы потоков и памяти (нужно только Operations научить их делать), а профайлер разве что для разработки подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 14:52 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Ну, во первых мы о локальной среде а не продуктовой. Во вторых, инструмент специально создан чтобы не тормозить осн код. А про Flame графики я согласен что они оригинальны. Но ведь это собирательное название? Инструмент то какой например выдаст график? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 14:56 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Удаленную отладку предлагаю не рассматривать. ТС новичок) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 14:58 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
"Хоспидя..." Агента для удалённой отладки даже я запускал, когда это требовалось разработчику. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 15:00 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Basil A. Sidorov "Хоспидя..." Агента для удалённой отладки даже я запускал, когда это требовалось разработчику. ТС никак кнопу Стоп не нажмет и стек сюда не покажет. ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 15:03 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Посмотрел профилировщик для графика вида Flame. https://github.com/jvm-profiling-tools/async-profiler/ Получается он Не для винды( ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 15:28 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
mayton По разному. Там кажется зависит от опций ResultSet. У меня даже был баг когда jdbc драйвер PG вызывал OOM Exception. AFAIK только целиком Есть вариант, когда одна SQL-инструкция бьется на несколько и явно на сервер отсылаются server-side cursor команды OPEN, FETCH etc... НО это как раз то исключение, которое только подтверждает правило, что никаких "выдавать в сеть строки row-by-row." нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 17:39 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Есть вариант, когда одна SQL-инструкция бьется на несколько и явно на сервер отсылаются server-side cursor команды OPEN, FETCH etc... НО это как раз то исключение, которое только подтверждает правило, что никаких "выдавать в сеть строки row-by-row." нет. да ладно... https://jdbc.postgresql.org/documentation/head/query.html#fetchsize-exampleBy default the driver collects all the results for the query at once. This can be inconvenient for large data sets so the JDBC driver provides a means of basing a ResultSet on a database cursor and only fetching a small number of rows. A small number of rows are cached on the client side of the connection and when exhausted the next block of rows is retrieved by repositioning the cursor. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 17:44 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Андрей Панфилов Leonid Kudryavtsev Есть вариант, когда одна SQL-инструкция бьется на несколько и явно на сервер отсылаются server-side cursor команды OPEN, FETCH etc... НО это как раз то исключение, которое только подтверждает правило, что никаких "выдавать в сеть строки row-by-row." нет. да ладно... https://jdbc.postgresql.org/documentation/head/query.html#fetchsize-exampleBy default the driver collects all the results for the query at once. This can be inconvenient for large data sets so the JDBC driver provides a means of basing a ResultSet on a database cursor and only fetching a small number of rows. A small number of rows are cached on the client side of the connection and when exhausted the next block of rows is retrieved by repositioning the cursor. Ровно то, о чем я и говорил! a means of basing a ResultSet on a database cursor одна SQL-инструкция бьется на несколько и явно на сервер отсылаются server-side cursor команды OPEN, FETCH etc... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 18:07 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
одна команда = один ответ Никакого row-by-row на транспортном уровне PostgreSQL не умеет. В полном отличие от Oracle, где наоборот, проблема с производительность может быть именно из-за row-by-row и приходится делать batch/fetch size ))) AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 18:10 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, чет я все равно не догнал: вот есть БД, мы с ней по tcp/ip общаемся, чтобы она нам новую строку отдала, нам же нужно как-то ее об этом спросить, сама же она об этом не догадается, разве нет? Значит нужно какой-то RPC слать, а как он называется не особо интересно. Вон в оракле пишут что оно по 10 строк отдает по умолчанию: https://docs.oracle.com/cd/E18283_01/java.112/e16548/resltset.htmBy default, when Oracle JDBC runs a query, it retrieves a result set of 10 rows at a time from the database cursor. This is the default Oracle row fetch size value. You can change the number of rows retrieved with each trip to the database cursor by changing the row fetch size value. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 20:42 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Ну типо так https://docs.microsoft.com/ru-ru/sql/ado/reference/ado-api/cachesize-property-ado?view=sql-server-ver15 Продвигаясь в цикле в коде по одной драйвер берет сразу несколько. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 20:58 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, ну, в Oracle и PostgreSQL точно также, просто в первом размер чанка 10 по-умолчанию, а во втором по умолчанию выгребает все что можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 21:01 |
|
Блокировка потоков
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Все что можно неудобно. У меня код стоял на открытии запроса 30 сек. И все висело. Пока шло по сети. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 21:09 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120472]: |
0ms |
get settings: |
18ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
26ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
2007ms |
get tp. blocked users: |
1ms |
others: | 275ms |
total: | 2337ms |
0 / 0 |