2015-09-11 1 views
1

Я использую свою собственную реализацию MapStore в наших узлах Hazelcast. Магазин загружает базу данных MSSQL для загрузки. Несмотря на то, что я назначил неоправданно большой объем памяти для JVM, после загрузки всего набора ключей он не обрабатывает больше, чем в среднем по 6 ключей за раз. Таким образом, процесс начальной загрузки является неприемлемо медленным.Hazelcast MapStore настроить размер файла чтения

Один из способов, которыми я пользуюсь сейчас, заключается в том, что я настроил MapStore на то, чтобы быть нетерпеливым и не ленивым при загрузке. Таким образом, данные должны быть уже доступны к тому времени, когда они понадобятся. Я бы предпочел, чтобы хранилище было ленивым и только доступ к данным, когда это необходимо, но с этой производительностью требуется минут, чтобы он был готов.

Знает ли кто-нибудь, как размер читаемого фрагмента может быть настроен для Hazelcast MapStore? Я бы сказал, что ключи 2K не должны бороться за систему.

[cached13] DEBUG MyMapStoreImpl l:72 - LoadAllKeys loaded: 2427 keys 
[cached4] DEBUG MyMapStoreImpl l:62 - loadAll() since begun: 1504 ms Curr.Keys: 6 
[cached17] DEBUG MyMapStoreImpl l:62 - loadAll() Since begun: 1862 ms Curr.Keys: 5 
[cached6] DEBUG MyMapStoreImpl l:62 - loadAll() since begun: 2436 ms Curr.Keys: 8 

ответ

1

loadAll вызывается для каждого раздела. Поскольку Hazelcast имеет 271 разделение по умолчанию, это составляет около 9 ключей на раздел. Поэтому я думаю, что в этой части нет проблем. Поворот вокруг этого большого количества ключей на каждой итерации - это ожидаемое поведение. Вы можете заметить, что размер ключа для каждого вызова будет больше, если у вас больше данных. Что я предлагаю вам, это проверить производительность запросов MSSQL, что может быть узким местом вашего запроса.