Чтение / запись кофеина занимает больше времени при высокой нагрузке - PullRequest
0 голосов
/ 12 апреля 2020

Вот как я создаю мой 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 или любые другие общие рекомендации, которые я могу сделать, чтобы улучшить время ожидания? спасибо

...