powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Memory leak
25 сообщений из 30, страница 1 из 2
Memory leak
    #40056354
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят подскажите такой момент - кто сталкивался.
Есть приложуха,которая из моного качает дату ,мапит ее и пишет в постгрес
так вот стлкнулся с тем что происходит какая то дикая утечка памяти сжирает ОЗУ где то ща минут 20 работы сервиса ( 30 гиг)
вообщем предположений всего 3
1.само джава приложение
2.монго
3. постгерс

хочется понять как найти если такаяя утечка есть в джава коде- какие способы или инструменты - для меня это впервый раз- подобного рода задача- чтобы не гуглить всяких даунов и делать неправильно -хочется сразу послушать как и что делали вы
...
Рейтинг: 0 / 0
Memory leak
    #40056358
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

Вырубать лишнее по частям и сравнивать
...
Рейтинг: 0 / 0
Memory leak
    #40056361
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
Перенести бд на другой хост это даже не 30 минут а 3 минуты сэр!
...
Рейтинг: 0 / 0
Memory leak
    #40056372
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.гуглишь как дампить heap в яве - там две команды, jmap и jcmd
2. полученный файл открываешь прямо в IDEA, он его парсит и показывает, что больше всего памяти жрет - ну не прям показывает-показывает, там тоже нужно смотреть что к чему, но можно погуглить (analyze java memory dump), если сам не дотумкаешь
пункт 2 еще можно с помощью eclipse memory analyzer, на него наверное больше туториалов, но смысл анализа тот же - находишь самые большие объекты, смотришь куда от них концы ведут.
...
Рейтинг: 0 / 0
Memory leak
    #40056373
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
asv79,
Перенести бд на другой хост это даже не 30 минут а 3 минуты сэр!

дело не в хосте это точно- у меня такая картина наблюдается и локально и на серваке
очень странная ситуация - такое ощущение что вот все что достается из монго или кладется в постгрес остается где то в озу и висит там мертвым грузом
...
Рейтинг: 0 / 0
Memory leak
    #40056374
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
asv79,

Вырубать лишнее по частям и сравнивать

проблема в том что вырубить то нечего там особо есть набор методов который берет из монго дату - мапит ее и пишет в постгрес
и вот тут видимо где то либо данные из монго либо то что в постгрес уходит зависает в оперативке - просто сжирая ее за считанные минуты,но это конечно может быть и не так ,а лишь мое предположение
...
Рейтинг: 0 / 0
Memory leak
    #40056380
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
Вы нас не путайте.
Вы написали три причины. Одна из них субд.
Если точно не причем, то зачем написали?
...
Рейтинг: 0 / 0
Memory leak
    #40056381
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

вообщем предположений всего 3
1.само джава приложение
2.монго
3. постгерс
??
...
Рейтинг: 0 / 0
Memory leak
    #40056385
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
PetroNotC Sharp
asv79,
Перенести бд на другой хост это даже не 30 минут а 3 минуты сэр!

дело не в хосте это точно- у меня такая картина наблюдается и локально и на серваке
очень странная ситуация - такое ощущение что вот все что достается из монго или кладется в постгрес остается где то в озу и висит там мертвым грузом
вы не поняли слово хост в моем посте выше.
...
Рейтинг: 0 / 0
Memory leak
    #40056390
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
asv79,
Вы нас не путайте.
Вы написали три причины. Одна из них субд.
Если точно не причем, то зачем написали?

я хотел по пунктам пройтись начиная с приложения

но похоже дело не в приложении я сейчас заметил что в бд у меня лежало всего 2 гига + данных я дропнул базу и на диске высвободилось тут же почти 15 гиг- это куда постгрес столько себе забрал то ?
...
Рейтинг: 0 / 0
Memory leak
    #40056393
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
>но это конечно может быть и не так ,а лишь мое предположение
==за минуту проверим? На тестовый сервак урл переключишь?
...
Рейтинг: 0 / 0
Memory leak
    #40056396
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
PetroNotC Sharp
asv79,
Вы нас не путайте.
Вы написали три причины. Одна из них субд.
Если точно не причем, то зачем написали?

я хотел по пунктам пройтись начиная с приложения

но похоже дело не в приложении я сейчас заметил что в бд у меня лежало всего 2 гига + данных я дропнул базу и на диске высвободилось тут же почти 15 гиг- это куда постгрес столько себе забрал то ?
меняйте тему топика. Вопрос про бд или про оперативку или про HDD?
...
Рейтинг: 0 / 0
Memory leak
    #40056399
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
asv79
пропущено...

я хотел по пунктам пройтись начиная с приложения

но похоже дело не в приложении я сейчас заметил что в бд у меня лежало всего 2 гига + данных я дропнул базу и на диске высвободилось тут же почти 15 гиг- это куда постгрес столько себе забрал то ?
меняйте тему топика. Вопрос про бд или про оперативку или про HDD?

вопрос комплексный - пока не понятна причина
но кое что начинает проясняться
вот такой сейчас прикол
восстаналиваю бд -(было 77.9 гига на диске)
после рестора 72.4 !!!
делаю скрипт по таблицам и сколько каждая занимает - там даже гигабайта нет
тоесть куда то постгрес скушал почти 4 + гига
это какой то прикол с индексами и резервацией под типы ? где память то моя)
...
Рейтинг: 0 / 0
Memory leak
    #40056400
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С одной стороны, в первом сообщении написано про ОЗУ. То есть речь однозначно про память.
С другой стороны, это написал Стас. То есть написанное может означать что угодно. Что сильнее? Однозначный термин или автор? Тут предел решать надо.
...
Рейтинг: 0 / 0
Memory leak
    #40056403
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
С одной стороны, в первом сообщении написано про ОЗУ. То есть речь однозначно про память.
С другой стороны, это написал Стас. То есть написанное может означать что угодно. Что сильнее? Однозначный термин или автор? Тут предел решать надо.

похоже не ОЗУ ,а именно дисковое пространство
тоесть локально у меня на глазах прям тает мой ssd( а почему тает я пока не могу сказать - может не хватает ОЗУ и добирается с ssd либо же с озу все ок ,а просто чем то заполняется дисковое пространство()

ну собственно рестор дампа подверждает теорию- данных в бд мало ,а сожрало памяти много
...
Рейтинг: 0 / 0
Memory leak
    #40056405
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,

)))
...
Рейтинг: 0 / 0
Memory leak
    #40056412
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- СРОЧНО! НЕМЕДЛЕННО, ПРОСТО НЕОБХОДИМО РЕШИТЬ ПРОБЛЕМУ.
- Какую?
- Сейчас придумаем
...
Рейтинг: 0 / 0
Memory leak
    #40056488
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Есть у него такая особенность. Но не на записях как у тебя
а на толстых выборках. Но всё равно надо проверить.

Эклипс аналайзер ты уж сам разберись как работает. Там - графичесекий интерфейс. Не сложно.

Ну дальше по ситуации.
...
Рейтинг: 0 / 0
Memory leak
    #40056520
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

Код где? Минимальный пример, чтоб текло сделай. Вопросы отпадут еще до того, как закончишь.
...
Рейтинг: 0 / 0
Memory leak
    #40056608
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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гиговый дамп ещё и не факт что откроется)
...
Рейтинг: 0 / 0
Memory leak
    #40056620
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В нашем, современном мире стоимость услуг разработчика примерно равна стоимости хостинга хорошего железа.

Вот bare-metal тачка со 128Гб на борту стоит 900 Euro/mon.

Если задача работает в импульсном режиме - тоесть наподобие джоба - то можно и еще сэкономить запуская
ее в докерах или прочих контейнерах по факту использования. Ну примерно так как работает пул Jenkins
workers. Там - еще дешевле.

Поскольку OOM не было, то может и проблема не так уж и значима. Может задача худо бедно работает?
Кушает 30 гиг? Но может это и есть ее футпринт. Кеши прогрела. Скушала 30. И сидит себе тихо.

Если лет 15 назад эти 30 Гиг были просто немыслимы - то в наше время это так. Для "сугрева..."

Хотя мне как базовику тоже непонятно что там можно так много заполнять? Краткая информация о физлицах
всей планеты Земля поместится в (7 000 000 000 чел * допусти на 4 килобайта на каждого = 27 Гигабайт прибл)
вобщем поместится в тот-же объем.
...
Рейтинг: 0 / 0
Memory leak
    #40056654
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Краткая информация о физлицах всей планеты Земля поместится в (7 000 000 000 чел * допусти на 4 килобайта на каждого = 27 Гигабайт прибл)
Терабайт.
...
Рейтинг: 0 / 0
Memory leak
    #40056661
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
Краткая информация о физлицах всей планеты Земля поместится в (7 000 000 000 чел * допусти на 4 килобайта на каждого = 27 Гигабайт прибл)
Терабайт.

Хм... да действительно я ошибся.

Хорошо. Еще сравнение. Население РФ = 145 млн чел. Если для каждого гражданина потратить 80 символов
текста для регистрации некой минимальной информации (налоговые номера, и прочее) то выйдет
файлик на 10 ГБ.

Вполне себе подъёмно для памяти.
...
Рейтинг: 0 / 0
Memory leak
    #40056858
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стас вот еще jmap посмотри.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Usage:
    jmap -clstats <pid>
        to connect to running process and print class loader statistics
    jmap -finalizerinfo <pid>
        to connect to running process and print information on objects awaiting finalization
    jmap -histo[:live] <pid>
        to connect to running process and print histogram of java object heap
        if the "live" suboption is specified, only count live objects
    jmap -dump:<dump-options> <pid>
        to connect to running process and dump java heap
    jmap -? -h --help
        to print this help message
...
Рейтинг: 0 / 0
Memory leak
    #40056890
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Кушает 30 гиг? Но может это и есть ее футпринт. Кеши прогрела. Скушала 30. И сидит себе тихо.

Если лет 15 назад эти 30 Гиг были просто немыслимы - то в наше время это так. Для "сугрева..."

Смотря какой GC.
Если классические, то на таких объемах сборка мусора уже сильно большая проблема.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Memory leak
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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