Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
mayton
Member

Откуда: loopback
Сообщений: 39939
Вобщем если речь идет о 10-100% оверхеда по памяти - то лучше просто купить память на сервак и растянуть Xmx
по максимуму насколько это возможно.

Если OutOfMemory будет регулярным и есть тенденция что база вырастет очень резко - тогда надо действительно
key-value хранилище. Решать автору вобщем-то.
31 янв 19, 12:53    [21798692]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
just_vladimir
Member

Откуда:
Сообщений: 869
Да вроде варианты очевидны:
1. ОЗУ на сервере не хватает и нет супер жестких требований по производительности - РСУБД
2. ОЗУ на сервере не хватает, но производителность РСУБД не устраивает - подбираем базу под свои экзотические потребности, смотрим всякие Key-value, NoSQL и маскирующиеся под РСУБД, но модные внутри (а-ля тарантул)
3. Ограничений по ОЗУ нет, требований по персистенсу нет, производительности модных СУБД не хватает, а просто приложению сложно ворочать много объектов в хипе - берем либу для off-heap cache
4. Ограничений по ОЗУ нет, но нужен персистенс и супер производительность - берем IMDG решение
31 янв 19, 14:18    [21798797]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7525
just_vladimir
....
3. Ограничений по ОЗУ нет, требований по персистенсу нет, производительности модных СУБД не хватает, а просто приложению сложно ворочать много объектов в хипе - берем либу для off-heap cache
....

При этом аккуратно смотрем, кто из студентов делал эту мега-либу. Если есть фотка и девочка-студент грудастая - можно за ней либу потестить.
Если фотки нет, то оно Вам надо, за студентами их студенческие поделки тестить?

Не видел ни одной нормальной либы для off-heap. Нормальные (более-менее) есть, но они все для специфических задачь. Если value для Map'а могут быть разного размера, то удаление данных из off-heap, уже не тревиальная задача (фрагментация). Насколько стоит замусоривать память операционной системы и что этим при активной работе в режиме 24x7 можно достигнуть, лично мне не очень понятно. Но я бы на реальных PROD серверах эксперементировал бы с опаской.

IMHO & AFAIK

Если такое тащить в проект, то только понимая, что притащенный copy-past'ом из I-net'а код самому же придется и поддерживать. А тогда, проще уж свою либу написать (методом Copy-Past'а) заточенную под свои данные и паттерн нагрузки.
31 янв 19, 15:08    [21798863]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
mayton
Member

Откуда: loopback
Сообщений: 39939
Еще ... глубоко не вникая в детали. Я-бы установил Eclipse Memory Analyzer.
И посмотрел-бы что вообще лежит в этой хеш-мапе. Если там к примеру
есть дубликаты строк - то можно поиграть в справочники. Или заменить
толстые типы данных (Date) на атомарные (long) если бизнес-логика позволяет.
Булевы - слить пакетом в одно целое (по аналогии с С++ bitfields).

Вобщем до того как покупать память и ставить СУБД просто проанализировать
top 10 memory consumers. Вангую что там будет char[] но что внутри надо поисследовать.
31 янв 19, 15:50    [21798917]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5055
mayton
Вангую что там будет char[].


Шерлок, но как?
31 янв 19, 15:51    [21798920]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
mayton
Member

Откуда: loopback
Сообщений: 39939
Озверин
mayton
Вангую что там будет char[].


Шерлок, но как?

А он везде...
31 янв 19, 15:56    [21798924]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7525
mayton
А он везде...

+++

:-)
31 янв 19, 16:15    [21798937]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
just_vladimir
Member

Откуда:
Сообщений: 869
Leonid Kudryavtsev
just_vladimir
....
3. Ограничений по ОЗУ нет, требований по персистенсу нет, производительности модных СУБД не хватает, а просто приложению сложно ворочать много объектов в хипе - берем либу для off-heap cache
....

При этом аккуратно смотрем, кто из студентов делал эту мега-либу. Если есть фотка и девочка-студент грудастая - можно за ней либу потестить.
Если фотки нет, то оно Вам надо, за студентами их студенческие поделки тестить?

Не видел ни одной нормальной либы для off-heap. Нормальные (более-менее) есть, но они все для специфических задачь. Если value для Map'а могут быть разного размера, то удаление данных из off-heap, уже не тревиальная задача (фрагментация). Насколько стоит замусоривать память операционной системы и что этим при активной работе в режиме 24x7 можно достигнуть, лично мне не очень понятно. Но я бы на реальных PROD серверах эксперементировал бы с опаской.

IMHO & AFAIK

Если такое тащить в проект, то только понимая, что притащенный copy-past'ом из I-net'а код самому же придется и поддерживать. А тогда, проще уж свою либу написать (методом Copy-Past'а) заточенную под свои данные и паттерн нагрузки.

Ну вот, например, вроде Паньгин не тянет на грудастую девочку студентку, но думаю, что если прижмет и задача будет требовать off heap кэша, то его либой можно уж и воспользоваться https://github.com/odnoklassniki/one-nio, но да, понятно, что на свой страх и риск, но если надо, то что уж делать.
31 янв 19, 16:31    [21798954]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7525
Leonid Kudryavtsev
...Нормальные (более-менее) есть, но они все для специфических задачь....


https://github.com/odnoklassniki/one-nio,

Дело же не в либе, а что бы ей еще и правильно пользоваться и по назначению.

Например глянул на класс allocator. Если, не дай бог, выделять маленькими блоками, то смысла никакого. Т.к. при allocate создается еще и служебные объекты в Heap'е. Т.ч. данные запихиваемые в OffHeap нужно как-то объединять в достаточно большие блоки. Что, для произвольных данных, уже не очень тревиально.

LongLongHashMap все хранит в OffHeap:
1) AFAIK а разница в скорости доступа heap vs off heap, как бы не маленькая (должно быть разы, вплодь до порядков. Но не тестил!).
2) Маппа хранится одним куском. Что для ОЧЕНЬ большой маппы, плохо. Т.к. фрагментацию памяти в ОС никто не отменял. (на данном форуме был топик в подфоруме Delphi, что free памяти навалом, а массив не выделяется)

LongObjectHashMap values вроде хранить в обычном heap'е. Экономить на keys (с учетом потери скорости на offheap) смысла вообще не вижу.

Это с ходу. Могу ошибаться.
31 янв 19, 16:53    [21798989]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
just_vladimir
Member

Откуда:
Сообщений: 869
Leonid Kudryavtsev
Leonid Kudryavtsev
...Нормальные (более-менее) есть, но они все для специфических задачь....


https://github.com/odnoklassniki/one-nio,

Дело же не в либе, а что бы ей еще и правильно пользоваться и по назначению.

Например глянул на класс allocator. Если, не дай бог, выделять маленькими блоками, то смысла никакого. Т.к. при allocate создается еще и служебные объекты в Heap'е. Т.ч. данные запихиваемые в OffHeap нужно как-то объединять в достаточно большие блоки. Что, для произвольных данных, уже не очень тревиально.

LongLongHashMap все хранит в OffHeap:
1) AFAIK а разница в скорости доступа heap vs off heap, как бы не маленькая (должно быть разы, вплодь до порядков. Но не тестил!).
2) Маппа хранится одним куском. Что для ОЧЕНЬ большой маппы, плохо. Т.к. фрагментацию памяти в ОС никто не отменял. (на данном форуме был топик в подфоруме Delphi, что free памяти навалом, а массив не выделяется)

LongObjectHashMap values вроде хранить в обычном heap'е. Экономить на keys (с учетом потери скорости на offheap) смысла вообще не вижу.

Это с ходу. Могу ошибаться.

На всякий случай уточню, что мы ведь оба понимаем, что если вдруг дело дошло до того, что мы стали задумываться об off heap кэшах, то у нас уже проект не совсем уж на коленке деланный и в команде не 1.5 студента, так ведь?
31 янв 19, 17:01    [21798996]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7525
Если взять исходный вопрос ТС, то сколько человек делает проект - не важно. Все равно получится:

+

Картинка с другого сайта.
31 янв 19, 17:05    [21799000]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
mayton
Member

Откуда: loopback
Сообщений: 39939
Leonid Kudryavtsev
Leonid Kudryavtsev
...Нормальные (более-менее) есть, но они все для специфических задачь....

LongLongHashMap все хранит в OffHeap:
1) AFAIK а разница в скорости доступа heap vs off heap, как бы не маленькая (должно быть разы, вплодь до порядков. Но не тестил!).
2) Маппа хранится одним куском. Что для ОЧЕНЬ большой маппы, плохо. Т.к. фрагментацию памяти в ОС никто не отменял. (на данном форуме был топик в подфоруме Delphi, что free памяти навалом, а массив не выделяется)

LongObjectHashMap values вроде хранить в обычном heap'е. Экономить на keys (с учетом потери скорости на offheap) смысла вообще не вижу.

А какую задачу решает LongLongHashMap? Там по API - непонятно. Нет внятного description.
Если индексы больше 2 Гига то это точно оно. Ибо декларировано. А насчет другого... ну лучшее враг
хорошего.
31 янв 19, 17:44    [21799043]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
mayton
Member

Откуда: loopback
Сообщений: 39939
Еще пару названий вспомнил.

https://hazelcast.com/ - возможно есть коммерческая ветка. Где возможностей больше. Надо проверять.

https://github.com/dain/leveldb - порт сишного LevelDB на Java. Лично я не юзал. Я какраз брал его С++ ную часть в составе Infinispan.
Внизу документации пишут что юзается в ActiveMQ

https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - Беркли. Это старый проверенный
конь который работает в Линуксах уже давно. Кажется в DNS используется. Опенсорцные разработки Оракла
замерли на какой-то версии. Кажется новых нет.
31 янв 19, 18:30    [21799084]     Ответить | Цитировать Сообщить модератору
 Re: Out of memory errror - есть ли возможность Свопа ?  [new]
razliv
Member

Откуда:
Сообщений: 1088
Спасибо большое, никогда раньше не работал с такими вещами - раньше стандартных Явовских
коллекций вполне хватало. Но теперь открыл для себя новую область :)

MapDB хватило для моих нужд, фурычит :)
1 фев 19, 09:32    [21799320]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Java Ответить