Издержки разделения и сериализации в Hazelcast

У меня есть карта IMap, где класс Abc является вложенным классом, который реализует сериализацию. Даже без синхронизации и асинхронного резервного копирования я получаю исключение нехватки памяти. Когда я уменьшаю количество разделов до 3 с 271 по умолчанию, это, кажется, работает, и все записи загружаются успешно. Каковы издержки разделения и сериализации, возникающие во время MapLoading.

1 ответ

Решение

Не уменьшайте количество разделов до 3, вы замедляете систему, уменьшая параллелизм. На каждом элементе кластера имеется несколько потоков разделов, и каждому потоку разделов принадлежит определенное количество разделов. Сокращение этого до такого низкого количества резко бы повлияло на производительность. Более того, вы не можете иметь более 3-х членов в кластере (я думаю, что на самом деле это может быть 2) с 3-мя кластерными разделами.

Вы смогли избежать OOME, потому что было меньше объектов раздела, но это не будет длиться долго. Вам необходимо соответствующим образом настроить размер кучи JVM для требуемого использования кэша.

Что касается издержек сериализации, Java-сериализация является худшей с точки зрения размера полезной нагрузки и задержки. Используйте сериализацию Hazelcast, вот ссылка: http://docs.hazelcast.org/docs/3.10.2/manual/html-single/index.html

Другие вопросы по тегам