반응형
Recent Posts
Recent Comments
관리 메뉴

개발잡부

[es] elasticsearch cache 모니터링 (query_cache, request_cache) 본문

ElasticStack/Elasticsearch

[es] elasticsearch cache 모니터링 (query_cache, request_cache)

닉의네임 2023. 9. 25. 08:02
반응형

검색 결과 리스팅은 Query Cache에, 검색 결과에 대한 집계 는 Request Cache 에 저장 된다

그렇다면 둘다 확인해서 multi_match + aggs 의 결과가 어디에 캐싱된건지 확인 

 

GET /location-index/_stats/query_cache?human

{
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "_all": {
    "primaries": {
      "query_cache": {
        "memory_size": "0b",
        "memory_size_in_bytes": 0,
        "total_count": 0,
        "hit_count": 0,
        "miss_count": 0,
        "cache_size": 0,
        "cache_count": 0,
        "evictions": 0
      }
    },
    "total": {
      "query_cache": {
        "memory_size": "0b",
        "memory_size_in_bytes": 0,
        "total_count": 0,
        "hit_count": 0,
        "miss_count": 0,
        "cache_size": 0,
        "cache_count": 0,
        "evictions": 0
      }
    }
  },
  "indices": {
    "location-index": {
      "uuid": "zA8IsMKdRjyjGK4KtIUXsg",
      "health": "green",
      "status": "open",
      "primaries": {
        "query_cache": {
          "memory_size": "0b",
          "memory_size_in_bytes": 0,
          "total_count": 0,
          "hit_count": 0,
          "miss_count": 0,
          "cache_size": 0,
          "cache_count": 0,
          "evictions": 0
        }
      },
      "total": {
        "query_cache": {
          "memory_size": "0b",
          "memory_size_in_bytes": 0,
          "total_count": 0,
          "hit_count": 0,
          "miss_count": 0,
          "cache_size": 0,
          "cache_count": 0,
          "evictions": 0
        }
      }
    }
  }
}

 

GET /_nodes/stats/indices/request_cache?human

{
  "_nodes": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "cluster_name": "docker-cluster",
  "nodes": {
    "bpumm1NjRAiDyuAgBN6XpQ": {
      "timestamp": 1695543724849,
      "name": "ee861c7e21e4",
      "transport_address": "172.18.0.2:9300",
      "host": "172.18.0.2",
      "ip": "172.18.0.2:9300",
      "roles": [
        "data",
        "data_cold",
        "data_content",
        "data_frozen",
        "data_hot",
        "data_warm",
        "ingest",
        "master",
        "ml",
        "remote_cluster_client",
        "transform"
      ],
      "attributes": {
        "ml.machine_memory": "2081312768",
        "xpack.installed": "true",
        "ml.allocated_processors_double": "8.0",
        "ml.max_jvm_size": "536870912",
        "ml.allocated_processors": "8"
      },
      "indices": {
        "request_cache": {
          "memory_size": "22.1kb",
          "memory_size_in_bytes": 22720,
          "evictions": 0,
          "hit_count": 0,
          "miss_count": 59
        }
      }
    }
  }
}

 

이런식으로 닝겐이 알아보기 쉽게? 표시해주는데 테스트해보자

 

캐시삭제

POST /<target>/_cache/clear

POST /_cache/clear

 

case 1. 

케시 지우고

multi_match + aggs 2개 필드 조회 X 300 키워드 

 

query 

캐싱은 되지 않았고 (캐시 사이즈 변경 없음) Aggs 속도는 50개 키워드 X 6회 반복 이였는데 첫 쿼리에서 저런 모양이.

 

Case 2.

케시 지우고

multi_match 쿼리만 X 300 키워드 실행

캐싱은 되지 않았고 (캐시 사이즈 변경 없음) Aggs 속도는 50개 키워드 X 6회 반복 간헐적으로 응답시간이 튀기는 하나. ms 단위의 차이라서 크게 의미는 없어보임.

 

Case 3. 

케시 지우고

multi_match + aggs 2개 필드 조회 X 300 키워드 + multi_match X 300 키워드

 

캐싱은 되지 않았고 (캐시 사이즈 변경 없음) multi_match + aggs 2개 필드 조회 X 300 키워드 + multi_match X 300 키워드를 두번 실행한 결과값과 동일 

- 이렇게 두번 실행한 이유는 aggs 결과를 먼저 캐싱해서 만들고 multi_match 쿼리를 실행 했을때 결과를 비교하기 위함 

 

Case4. 

케시 지우고

multi_match + aggs 2개 필드 조회 (캐시생성) X 300 키워드 + multi_match X 300 키워드

1회부터 50회 까지의 집계결과가 캐싱되었고 데이터 조회가 디스크레벨을 조회하기전에 캐싱된 데이터에서 처리하고 있어 응답시간 감소 후 유지

캐싱데이터는 JVM heap 에 할당된 나머지 인스턴스의 메모리를 사용한다. 

 

 

작업환경

로컬 경로 : /Users/doo/project/tf-embeddings/location/cache_test

가상환경 : conda activate doo

실행파일 : cache_aggs.py

 

 

[참고] 

https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-stats.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-stats.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-clearcache.html

반응형

'ElasticStack > Elasticsearch' 카테고리의 다른 글

[es] aggs sort & cadinality  (0) 2023.11.17
Aggs cardinality  (0) 2023.11.13
[es] file system cache 를 이용한..  (2) 2023.09.25
[es] Warm up global ordinals  (0) 2023.09.25
[es] elasticsearch 성능개선 (elasticsearch cache)  (0) 2023.09.25
Comments