|
Memory leak
|
|||
---|---|---|---|
#18+
Ребят подскажите такой момент - кто сталкивался. Есть приложуха,которая из моного качает дату ,мапит ее и пишет в постгрес так вот стлкнулся с тем что происходит какая то дикая утечка памяти сжирает ОЗУ где то ща минут 20 работы сервиса ( 30 гиг) вообщем предположений всего 3 1.само джава приложение 2.монго 3. постгерс хочется понять как найти если такаяя утечка есть в джава коде- какие способы или инструменты - для меня это впервый раз- подобного рода задача- чтобы не гуглить всяких даунов и делать неправильно -хочется сразу послушать как и что делали вы ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:04 |
|
Memory leak
|
|||
---|---|---|---|
#18+
asv79, Вырубать лишнее по частям и сравнивать ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:12 |
|
Memory leak
|
|||
---|---|---|---|
#18+
asv79, Перенести бд на другой хост это даже не 30 минут а 3 минуты сэр! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:14 |
|
Memory leak
|
|||
---|---|---|---|
#18+
1.гуглишь как дампить heap в яве - там две команды, jmap и jcmd 2. полученный файл открываешь прямо в IDEA, он его парсит и показывает, что больше всего памяти жрет - ну не прям показывает-показывает, там тоже нужно смотреть что к чему, но можно погуглить (analyze java memory dump), если сам не дотумкаешь пункт 2 еще можно с помощью eclipse memory analyzer, на него наверное больше туториалов, но смысл анализа тот же - находишь самые большие объекты, смотришь куда от них концы ведут. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:32 |
|
Memory leak
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Перенести бд на другой хост это даже не 30 минут а 3 минуты сэр! дело не в хосте это точно- у меня такая картина наблюдается и локально и на серваке очень странная ситуация - такое ощущение что вот все что достается из монго или кладется в постгрес остается где то в озу и висит там мертвым грузом ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:32 |
|
Memory leak
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Вырубать лишнее по частям и сравнивать проблема в том что вырубить то нечего там особо есть набор методов который берет из монго дату - мапит ее и пишет в постгрес и вот тут видимо где то либо данные из монго либо то что в постгрес уходит зависает в оперативке - просто сжирая ее за считанные минуты,но это конечно может быть и не так ,а лишь мое предположение ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:35 |
|
Memory leak
|
|||
---|---|---|---|
#18+
asv79, Вы нас не путайте. Вы написали три причины. Одна из них субд. Если точно не причем, то зачем написали? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:46 |
|
Memory leak
|
|||
---|---|---|---|
#18+
asv79, вообщем предположений всего 3 1.само джава приложение 2.монго 3. постгерс ?? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:47 |
|
Memory leak
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, Перенести бд на другой хост это даже не 30 минут а 3 минуты сэр! дело не в хосте это точно- у меня такая картина наблюдается и локально и на серваке очень странная ситуация - такое ощущение что вот все что достается из монго или кладется в постгрес остается где то в озу и висит там мертвым грузом ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:49 |
|
Memory leak
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Вы нас не путайте. Вы написали три причины. Одна из них субд. Если точно не причем, то зачем написали? я хотел по пунктам пройтись начиная с приложения но похоже дело не в приложении я сейчас заметил что в бд у меня лежало всего 2 гига + данных я дропнул базу и на диске высвободилось тут же почти 15 гиг- это куда постгрес столько себе забрал то ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:53 |
|
Memory leak
|
|||
---|---|---|---|
#18+
asv79, >но это конечно может быть и не так ,а лишь мое предположение ==за минуту проверим? На тестовый сервак урл переключишь? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:54 |
|
Memory leak
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, Вы нас не путайте. Вы написали три причины. Одна из них субд. Если точно не причем, то зачем написали? я хотел по пунктам пройтись начиная с приложения но похоже дело не в приложении я сейчас заметил что в бд у меня лежало всего 2 гига + данных я дропнул базу и на диске высвободилось тут же почти 15 гиг- это куда постгрес столько себе забрал то ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:56 |
|
Memory leak
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79 пропущено... я хотел по пунктам пройтись начиная с приложения но похоже дело не в приложении я сейчас заметил что в бд у меня лежало всего 2 гига + данных я дропнул базу и на диске высвободилось тут же почти 15 гиг- это куда постгрес столько себе забрал то ? вопрос комплексный - пока не понятна причина но кое что начинает проясняться вот такой сейчас прикол восстаналиваю бд -(было 77.9 гига на диске) после рестора 72.4 !!! делаю скрипт по таблицам и сколько каждая занимает - там даже гигабайта нет тоесть куда то постгрес скушал почти 4 + гига это какой то прикол с индексами и резервацией под типы ? где память то моя) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 17:59 |
|
Memory leak
|
|||
---|---|---|---|
#18+
С одной стороны, в первом сообщении написано про ОЗУ. То есть речь однозначно про память. С другой стороны, это написал Стас. То есть написанное может означать что угодно. Что сильнее? Однозначный термин или автор? Тут предел решать надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 18:00 |
|
Memory leak
|
|||
---|---|---|---|
#18+
Alexander A. Sak С одной стороны, в первом сообщении написано про ОЗУ. То есть речь однозначно про память. С другой стороны, это написал Стас. То есть написанное может означать что угодно. Что сильнее? Однозначный термин или автор? Тут предел решать надо. похоже не ОЗУ ,а именно дисковое пространство тоесть локально у меня на глазах прям тает мой ssd( а почему тает я пока не могу сказать - может не хватает ОЗУ и добирается с ssd либо же с озу все ок ,а просто чем то заполняется дисковое пространство() ну собственно рестор дампа подверждает теорию- данных в бд мало ,а сожрало памяти много ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 18:04 |
|
Memory leak
|
|||
---|---|---|---|
#18+
- СРОЧНО! НЕМЕДЛЕННО, ПРОСТО НЕОБХОДИМО РЕШИТЬ ПРОБЛЕМУ. - Какую? - Сейчас придумаем ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 18:26 |
|
Memory leak
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, Перенести бд на другой хост это даже не 30 минут а 3 минуты сэр! дело не в хосте это точно- у меня такая картина наблюдается и локально и на серваке очень странная ситуация - такое ощущение что вот все что достается из монго или кладется в постгрес остается где то в озу и висит там мертвым грузом Запускай java с опциями дампа памяти в случае ООМ. Вот как здесь. https://stackoverflow.com/questions/4935520/generate-java-dump-when-outofmemory После этого качай Eclipse Memory Analyzer. https://www.eclipse.org/mat/ Открывай этот дамп и сформируй общий отчот по утечкам. Предположительно - флудит JDBC драйвер Postgres. Есть у него такая особенность. Но не на записях как у тебя а на толстых выборках. Но всё равно надо проверить. Эклипс аналайзер ты уж сам разберись как работает. Там - графичесекий интерфейс. Не сложно. Ну дальше по ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2021, 23:28 |
|
Memory leak
|
|||
---|---|---|---|
#18+
asv79, Код где? Минимальный пример, чтоб текло сделай. Вопросы отпадут еще до того, как закончишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2021, 04:46 |
|
Memory leak
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, Вы нас не путайте. Вы написали три причины. Одна из них субд. Если точно не причем, то зачем написали? я хотел по пунктам пройтись начиная с приложения но похоже дело не в приложении я сейчас заметил что в бд у меня лежало всего 2 гига + данных я дропнул базу и на диске высвободилось тут же почти 15 гиг- это куда постгрес столько себе забрал то ? 1) Журнал транзакций 2) Vacuum (https://www.postgresql.org/docs/10/routine-vacuuming.html) 3) Vacuumlo (если используете LOB) 4) Само по себе потребление 30gb памяти не говорит об утечке памяти, так как Java не отдаёт свободную память операционной системе. Надо смотреть метрики памяти внутри самой Java. А ещё важно, какие настройки заданы для xmx/xms, какой сборщик мусора выбран, сколько потоков в приложении и размер их стеков (ограничивается через xss), etc [вдруг у вас на проде xmx 128g и epsilon gc :) ] P.S. По моему опыту утечка памяти при огромном размере xmx может проявляться в виде конских пауз при сборке мусора Помимо eclipse mat, можно использовать условный JProfiler. Он позволяет посмотреть, что происходит с выделением памяти в процессе работы приложения. Раз вы можете полностью локально запустить сервис, то это будет удобнее ковыряния в дампе (а 30гиговый дамп ещё и не факт что откроется) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2021, 11:53 |
|
Memory leak
|
|||
---|---|---|---|
#18+
В нашем, современном мире стоимость услуг разработчика примерно равна стоимости хостинга хорошего железа. Вот bare-metal тачка со 128Гб на борту стоит 900 Euro/mon. Если задача работает в импульсном режиме - тоесть наподобие джоба - то можно и еще сэкономить запуская ее в докерах или прочих контейнерах по факту использования. Ну примерно так как работает пул Jenkins workers. Там - еще дешевле. Поскольку OOM не было, то может и проблема не так уж и значима. Может задача худо бедно работает? Кушает 30 гиг? Но может это и есть ее футпринт. Кеши прогрела. Скушала 30. И сидит себе тихо. Если лет 15 назад эти 30 Гиг были просто немыслимы - то в наше время это так. Для "сугрева..." Хотя мне как базовику тоже непонятно что там можно так много заполнять? Краткая информация о физлицах всей планеты Земля поместится в (7 000 000 000 чел * допусти на 4 килобайта на каждого = 27 Гигабайт прибл) вобщем поместится в тот-же объем. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2021, 12:54 |
|
Memory leak
|
|||
---|---|---|---|
#18+
mayton Краткая информация о физлицах всей планеты Земля поместится в (7 000 000 000 чел * допусти на 4 килобайта на каждого = 27 Гигабайт прибл) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2021, 14:28 |
|
Memory leak
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Краткая информация о физлицах всей планеты Земля поместится в (7 000 000 000 чел * допусти на 4 килобайта на каждого = 27 Гигабайт прибл) Хм... да действительно я ошибся. Хорошо. Еще сравнение. Население РФ = 145 млн чел. Если для каждого гражданина потратить 80 символов текста для регистрации некой минимальной информации (налоговые номера, и прочее) то выйдет файлик на 10 ГБ. Вполне себе подъёмно для памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2021, 14:38 |
|
Memory leak
|
|||
---|---|---|---|
#18+
Стас вот еще jmap посмотри. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2021, 12:34 |
|
Memory leak
|
|||
---|---|---|---|
#18+
mayton Кушает 30 гиг? Но может это и есть ее футпринт. Кеши прогрела. Скушала 30. И сидит себе тихо. Если лет 15 назад эти 30 Гиг были просто немыслимы - то в наше время это так. Для "сугрева..." Смотря какой GC. Если классические, то на таких объемах сборка мусора уже сильно большая проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2021, 14:58 |
|
|
start [/forum/topic.php?fid=59&msg=40056403&tid=2120487]: |
0ms |
get settings: |
24ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
577ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 690ms |
0 / 0 |