Вот как я создаю мой Caffeine Cache в Spring при загрузке:
Caffeine.newBuilder()
.initialCapacity(200000)
.maximumSize(200000)
.expireAfterWrite(15, TimeUnit.MINUTES)
.scheduler(Scheduler.systemScheduler())
.executor(caffeineWriteClientConnectionPool(cacheSpec))
.recordStats(() -> caffeineMetrics)
.writer(new CacheWriter<Object, Object>() {});
Я использую следующие синхронные методы:
cache.getAllPresent() -> fetch all keys present in cache if not fallback to distributed cache/db and then add the key to the caffeine cache
cache.putAll() -> a key is added to the caffeine cache when its missed
Когда загрузка кеша высокая, я вижу / положить время, увеличивающееся (> 100 мс), и это заставляет меня задуматься о том, должны ли эти вызовы быть позади Hystrix, но я думаю, что это будет излишним переворотом, затягивающим поток для поиска в памяти?
Кроме того, я вижу, что G C происходит довольно часто, и я считаю, что это может повлиять на время чтения / записи. Какие-либо предложения / лучшие практики по настройке G C или любые другие общие рекомендации, которые я могу сделать, чтобы улучшить время ожидания? спасибо