Инициализация расположения таблицы разделов кластера... в Hazelcast 3.9.1 занимает слишком много времени

Я пытаюсь создать проект службы Hazelcast, в котором я буду подписываться на хранилище данных RDBMS (Oracle DB 12c), создать компонент POJO/Java на лету, используя отражение, а затем выполнить синтаксический анализ этого объекта Java Bean для сопоставления JDBC ResultSet как строки результата. значения в объект Java Bean и загрузите эти сопоставленные объекты в распределенную карту.

Я проверил объем данных двух таблиц, из которых я пытаюсь загрузить в Hazelcast IMap, и он составляет всего 0,0625 и 0,0316 МБ. Так что это более простая реализация Hazelcast, просто инициализирующая два параллельных экземпляра / узла на localhost.

Я определяю в методе Java Main общее время выполнения с момента создания класса Java POJO и создания каждого из соответствующих объектов и их загрузки в Hazelcast IMAP.

Насколько я понимаю, это занимает слишком много времени с точки зрения системы, потому что мы наблюдаем похожее поведение даже в тестовых и продуктовых блоках с системными характеристиками в 3-4 раза лучше, чем приведенный ниже. Пожалуйста, помогите дать советы о том, что не так или это обычное первое разделение в рамках IMDG Hazelcast с двумя узлами в кластере.

Системные характеристики следующие:

Macbook Pro 2014 Процессор: 2,6 ГГц Intel Core i5 Память: 8 ГБ 1600 МГц DDR3

Пожалуйста, найдите журналы...

26 февраля 2018 10:30:39 com.hazelcast.internal.partition.impl.PartitionStateManager ИНФОРМАЦИЯ: [xx.xxx.xx.xxx]:5702 [dev] [3.9.1] Инициализация расположения таблицы разделов кластера... Количество записей в карте пользователя: 883

Количество записей в userMaster Map: 7499

Приблизительная продолжительность:92520 миллисекунд. 26 февраля 2018 10:32:10 com.hazelcast.core.LifecycleService ИНФОРМАЦИЯ: [xx.xxx.xx.xxx]:5701 [dev] [3.9.1] [xx.xxx.xx.xxx]:5701 - это SHUTTING_DOWN

1 ответ

Хотя я не смог решить проблему с MapLoader, основная проблема с ResultSet setFetchSize(), Это было установлено как 10, что вызывало слишком высокий сетевой ввод / вывод. Как только я увеличился, чтобы сказать 1000 или больше, выходит намного быстрее.

ЖУРНАЛЫ:

С обычным FetchSize(): prepareStatement.getFetchSize():10 февраля 28, 2018 19:24:51 com.hazelcast.internal.partition.impl.PartitionStateManager ИНФОРМАЦИЯ: [xx.xxx.xx.xx]:5702 [dev] [3.9.1] Инициализация расположения таблицы разделов кластера...

Количество записей в userMaster Map: 26464

Продолжительность прибл. Составила:276178 миллисекунд.

С большим FetchSize ():

prepareStatement.getFetchSize():1000 28 февраля 2018 г. 19:31:06 com.hazelcast.internal.partition.impl.PartitionStateManager INFO: [xx.xxx.xx.xx]]:5702 [dev] [3.9.1] Инициализация расположения таблицы разделов кластера... responseCode: 404 url: http://localhost:8080/mancenter/collector.do Количество записей в userMaster Map: 26464

Продолжительность прибл. Составила:11279 миллисекунд.

Я бы, конечно, разместил серверную и клиентскую версию кода для помощи с MapLoader, которая звучит как лучший подход.

В качестве дополнительной помощи, можете ли вы предоставить некоторую информацию о том, extends Mapload/Mapstore technique может быть написано для объектов / классов, которые создаются Runtime, так как меньший пример, который я пробовал отдельно, был с фиксированным Java Bean.

Я помню документацию с упоминанием MapStoreFactory() вариант. Будет ли это полезно.

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