Hazelcast NearCache не оказывает ожидаемого влияния на производительность
У нас есть приложение, работающее на 1 или 2 узлах, в зависимости от среды, с общим кешем на основе Hazelcast.
Один из запросов к приложению вызывает около 1000 запросов к этому кешу (все обращения к кешу).
В конфигурации с одним узлом это работает хорошо. В частности, каждый запрос занимает менее 10 мс.
Но если мы используем 2 узла, каждый запрос кеша занимает около 20-200 мс. Мы думали, что это произойдет из-за того, что Hazelcast получает данные с удаленного узла, что, конечно, связано с сетевым трафиком. Поэтому мы настроили его на использование NearCache, что, по нашему мнению, должно обеспечить примерно такую же скорость доступа, что и один локальный кэш. Но это не так, это никак не влияет на производительность.
Так что теперь мне интересно
- Как я могу проверить, действительно ли работает конфигурация NearCache?
- Как я могу получить производительность чтения, близкую к локальному кешу, но обновления (асинхронно) сообщаются с / всеми удаленными кешами, что, как я думал, я получу, настроив NearCache?
Мы инициализируем наш кеш со следующей конфигурацией:
HazelcastConfiguration.getOrCreateCache(
cacheName,
new CacheConfig<K, CR>()
.setNearCacheConfig(new NearCacheConfig())
.setExpiryPolicyFactory(
HazelcastConfiguration.createExpiryPolicyFactory(expiryAfterModification)),
cacheManager
);
1 ответ
Это зависит от многих вещей, но 20/200 мс - это много. Когда мы запускаем эталонный кластер из 4 узлов (4-х сокетный компьютер xeon) в 1 стандартной сети 1 GbE, процентиль 99 намного ниже 1 мс. Мы говорим здесь без тайника.
Ближний кэш должен давать очень хорошую производительность, потому что если данные локально кэшируются, то вызов локальный + вся внутренняя инфраструктура для выполнения операций пропускается (по крайней мере, для IMap и ближнего кеша; не совсем уверен в отношении кеша).
Можете ли вы попробовать нажать один и тот же набор ключей? Просто чтобы убедиться, что вы попали в ближний кеш.
Что вы используете в качестве ключа и значения? Они большие или сериализация недружелюбная?
Я все еще сталкиваюсь с проблемами; быстро попытайтесь IMap и включите около кэша и проверьте, если вы видите большие различия.