Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- spring-kafka
- avo
- spring-batch
- kafkastream
- confluent
- Kafka
- kafka interactive query
- Elk
- spring-cloud-stream
- gradle
- scala
- Spring
- kafka streams
- 한빛미디어
- aws
- statestore
- springboot
- Elasticsearch
- coursera
- scala 2.10
- 플레이 프레임워크
- Slick
- play framework
- Logstash
- schema registry
- enablekafkastreams
- 카프카
- RabbitMQ
- reactive
- kafkastreams
Archives
- Today
- Total
b
Spring Boot actuator 에 caffeine cache hit ratio 노출하기. 본문
springboot 문서를 참고 하면 /metrics 에 cache hit ratio 가 노출된다고 나온다 ( https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-metrics.html#production-ready-datasource-cache ) 하지만 그 리스트에 Caffeine 을 지원한 다는 얘기는 없다. 기본적으로 chche size는 metrics 에 노출이 되지만, hit/miss ratio는 노출이 되지 않으므로 구현이 필요하다.
현재 상황 :
지원 목록 : EhCache, Hazelcast, Infinispan, JCache and Guava
확인 : 문서에 나온대로 CacheStatisticsAutoConfiguration, CacheStatisticsProvider 를 사용하면 가능 할 것 같다.
그래서 아래와 같은 Spring Bean을 등록
@Bean
public CacheStatisticsProvider<CaffeineCache> getCaffeineCacheStatisticsProvider() {
return (cacheManager, cache) -> {
DefaultCacheStatistics statistics = new DefaultCacheStatistics();
CacheStats status = cache.getNativeCache().stats();
long result = status.requestCount();
if (result > 0) {
statistics.setSize(cache.getNativeCache().estimatedSize());
statistics.setHitRatio(status.hitRate());
statistics.setMissRatio(status.missRate());
}
return statistics;
};
}
이후 실행을 해보았지만, 원하는 대로 노출이 안되었다. Caffeine 쪽에서 해답을 얻을 수 있었다. 아래 내용을 참고 하여 기존 Cache를 만드는 부분에 아래 부분을 추가하였다.
.recordStats()
참고 링크 : https://github.com/ben-manes/caffeine/wiki/Statistics
결과 : http://localhost:8080/metrics
- cache.product.miss.ratio: 0.42857142857142855,
- cache.product.hit.ratio: 0.5714285714285714,
- cache.product.size: 3,
추가 : SpringBoot 2.0 부터는 micrometer 기반으로 caffeine로 지원을 한다.
'spring framework' 카테고리의 다른 글
SpringBoot 2.3 를 이용해 생성된 도커의 내부 구조 (0) | 2020.09.11 |
---|---|
Spring Cloud Finchley.M6 issue (0) | 2018.02.21 |
SPRINGBOOT로 AWS LAMBDA 이용하기 (0) | 2017.07.07 |
springboot 2.0의 RouterFunction 스캐닝 방법 (0) | 2017.04.25 |
springframework 5.0 webflux module (0) | 2017.04.23 |
Comments