
Anton
04.09.2018
09:02:32

Enterpise
04.09.2018
09:02:39
апгрейд в xml на новую версию не помог
еще раз: в ноде ты будешь не разрабатывать микросервисы

Google

Tolegen
04.09.2018
09:03:55
пожалуйста, направьте неразумного
у меня плей 2.6 в джава-ипостаси, джава 8, постгрес по JDBC
поднимаю из базы неск лям записей, делаю объекты, стримлю, выбираю по фильтру штук 1000 на страницу для отображения
проблема при этом — выжирает память (дадено 8ГБ), видимо, течёт где-то
профилирование показывает:
- что мой процесс стартует несколько раз (это, видимо, плеевская акка старается)
- что память выделена под кучу char[], byte[], byte[][]
понимаю, что это строки, но что именно с ними, хз:
- уже настраивал таблицу дедупликации
- писал везде .intern()
- пробовал разные GC (ParallelOldGC, ParallelGC, G1GC) и даже малость их настраивал
направьте, добрые люди, а то башку сломаю между вариантами
Нужно сразу на уровне БД фильтровать.

Enterpise
04.09.2018
09:04:02
ты будешь менять пакеты

Pavel
04.09.2018
09:04:43

Anton
04.09.2018
09:05:02
ты будешь менять пакеты
нет же, значит ты просто не умеешь её готовить, не надо свдить по негативному опыту за всю технологию

Enterpise
04.09.2018
09:07:34
а фирмы
проект на нодье с треском провалился

Таир
04.09.2018
09:10:36

Mikhail
04.09.2018
09:10:45

Таир
04.09.2018
09:10:50

Mikhail
04.09.2018
09:11:06
надо понимать, зачем и почему ты выбираешь какую-то технологию

Anton
04.09.2018
09:11:28
проект на нодье с треском провалился
всякое бывает, может там и вообще не нода была нужная, а другой интсрумент под ту задачу. или в принципе было мало компетенции по данной технологии, и это был откровенный риск

Luger
04.09.2018
09:11:41

Google

Mikhail
04.09.2018
09:11:58
если вы не подумав взяли технологию и провалились с ней - ну сорян, это вы виноваты, а не технология

Anton
04.09.2018
09:12:34

Enterpise
04.09.2018
09:12:45
https://stackoverflow.com/q/52162804/444079

Pavel
04.09.2018
09:13:21
в данном случае ты как делаешь?
в моём случае логика на джаве, в базе не могу её выполнить, и проблема не в логике (она быстрая, профиль же делал), а в том, что течёт память по строкам

Таир
04.09.2018
09:14:05


Nikita
04.09.2018
09:14:28
пожалуйста, направьте неразумного
у меня плей 2.6 в джава-ипостаси, джава 8, постгрес по JDBC
поднимаю из базы неск лям записей, делаю объекты, стримлю, выбираю по фильтру штук 1000 на страницу для отображения
проблема при этом — выжирает память (дадено 8ГБ), видимо, течёт где-то
профилирование показывает:
- что мой процесс стартует несколько раз (это, видимо, плеевская акка старается)
- что память выделена под кучу char[], byte[], byte[][]
понимаю, что это строки, но что именно с ними, хз:
- уже настраивал таблицу дедупликации
- писал везде .intern()
- пробовал разные GC (ParallelOldGC, ParallelGC, G1GC) и даже малость их настраивал
направьте, добрые люди, а то башку сломаю между вариантами
так мб снять heap dump и посмотреть на строки?..
да, конечно, их в рантайме будет оч много, но мб обнаружится что-то специфичное

Pavel
04.09.2018
09:14:33

Таир
04.09.2018
09:15:02

Pavel
04.09.2018
09:15:11

Таир
04.09.2018
09:15:40
просто если ты данные в память выгружаешь, то логично, что они забивают память

Pavel
04.09.2018
09:15:50

Таир
04.09.2018
09:16:14
в JDBC есть поточный режим, пробовал его?

Pavel
04.09.2018
09:16:40

Таир
04.09.2018
09:17:30
?

Pavel
04.09.2018
09:18:03
могу, в личку файл кинуть?
не сюда же файлами кидаться

Tolegen
04.09.2018
09:18:56

Таир
04.09.2018
09:19:18
коллективный разум и тп

Google

Pavel
04.09.2018
09:19:55

Таир
04.09.2018
09:20:17

Nikita
04.09.2018
09:20:26

Vasili
04.09.2018
09:20:49

Tolegen
04.09.2018
09:21:03
Ну и почувствовать что твой код не так уж и плох тоже хороший бонус

Pavel
04.09.2018
09:21:25

Tolegen
04.09.2018
09:21:42

Иннокентий
04.09.2018
09:21:50
А почему на уровне бд не фильтруешь? Какая логика мешает?

Pavel
04.09.2018
09:22:12

Иннокентий
04.09.2018
09:23:25
Наверное что то не так в проектировании бд

Pavel
04.09.2018
09:23:25

Tolegen
04.09.2018
09:24:02
А почему нельзя побольше памяти дать?)
Может ему хватит обработать

Pavel
04.09.2018
09:24:42

Mikhail
04.09.2018
09:24:43

Pavel
04.09.2018
09:25:07

Tolegen
04.09.2018
09:25:45
Кстати а какая у тебя JVM?

elefus
04.09.2018
09:25:53

Google

Tolegen
04.09.2018
09:25:58
В новых вроде добавляли оптимизации по хранению строк

Mikhail
04.09.2018
09:26:08

Pavel
04.09.2018
09:26:33

Nikita
04.09.2018
09:27:08
char[], byte[], byte[][]
а вы вообще уверены, что для процессинга такого количества записей вашего размера хватит 8 гб?
прикинуть примерный размер памяти как число записей * размеры колонки в БД

Иннокентий
04.09.2018
09:27:15
Лучше решать проблему в корне, например на уровне бд, чтоб не вытаскивать несколько лямов и оттуда отфильтровать 1000

Pavel
04.09.2018
09:27:19

Nikita
04.09.2018
09:27:21
как уже говорили, оно может не течь, а тупо не вмещать в себя необходимый объём

Admin
ERROR: S client not available

Mikhail
04.09.2018
09:27:48

Tolegen
04.09.2018
09:27:49

Pavel
04.09.2018
09:28:05

Tolegen
04.09.2018
09:28:33

Иннокентий
04.09.2018
09:28:42

Pavel
04.09.2018
09:28:45

Tolegen
04.09.2018
09:29:31
Попробуй на 10 жвм запуститься. Там хранение строк оптимизировали
Может и хватит 8 ГБ
Но что-то есть ощущение что для обработки миллионов записей БД этого мало
Читай данные порциями

Google

Pavel
04.09.2018
09:31:15

Tolegen
04.09.2018
09:31:29
Читай буффером
И пускай в процессинг

Pavel
04.09.2018
09:31:46
мне их надо прокачать сквозь память
в этом процессе в памяти залипают [имхо] строки

Tolegen
04.09.2018
09:33:27
Есть же BufferedInputStream как пример

elefus
04.09.2018
09:34:27

Tolegen
04.09.2018
09:35:27
Увеличить память вдвое

Pavel
04.09.2018
09:35:44

Dmitry
04.09.2018
09:37:14
@pled76 выскажу предположение: попробуйте проверить успевает ли gc убирать те количества объектов, которые создаются и перестают использоваться пока вы грузите данные из базы. Сталкивался с подобным поведением у себя в проекте

Таир
04.09.2018
09:37:26
короче, рабочая теория https://jdbc.postgresql.org/documentation/head/query.html#fetchsize-example
нужно включить использование курсора в постгре

Pavel
04.09.2018
09:38:07