[java] API - file system cache (request cache)
API 를 만들고 응답시간을 측정해서 최적의 성능을 만들어 보자
일단 제물이 될 index
820만건의 location-index
일단 aqqle 의 shop API 를 응용해서 후다닥 만들어 보자.
복붙해서 이름만 바꾸니까 1분 미만 컷
지금은 bool > filter > term 쿼리로 조회하니 응답속도가 빠르다.
일단 이 상태에서 리소스 사용과 응답속도를 측정해보잣
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
캐싱이 안되고 있지만 너무 빠르다
일단 지난 캐시 테스트와 같은 구조로 multi_match 쿼리 와 count집계(aggs) 를 두번 추가
전체쿼리
{
"size":100,
"query":{
"bool":{
"must":[
{
"multi_match":{
"query":"country_code",
"fields":[
"CO^1.0"
],
"type":"best_fields",
"operator":"OR",
"slop":0,
"prefix_length":0,
"max_expansions":50,
"zero_terms_query":"NONE",
"auto_generate_synonyms_phrase_query":true,
"fuzzy_transpositions":true,
"boost":1.0
}
}
],
"adjust_pure_negative":true,
"boost":1.0
}
},
"_source":{
"includes":[
],
"excludes":[
]
},
"aggregations":{
"COUNTRY":{
"terms":{
"field":"country",
"size":10,
"min_doc_count":1,
"shard_min_doc_count":0,
"show_term_doc_count_error":false,
"order":[
{
"_count":"desc"
},
{
"_key":"asc"
}
]
}
},
"CITY":{
"terms":{
"field":"city",
"size":10,
"min_doc_count":1,
"shard_min_doc_count":0,
"show_term_doc_count_error":false,
"order":[
{
"_count":"desc"
},
{
"_key":"asc"
}
]
}
}
}
}
자 이 쿼리로 테스트 해보자.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
음.. 대충 이런상태고 그럼 이 상태에서 aggs 에 대한 캐싱처리
![]() |
![]() |
![]() |
API 평균 : 11.22 | API 평균 : 10.96 | API 평균 : 10.55 |
캐싱을 태워도 차이가 크지 않음.. 쿼리가 너무 신사적이여서.. 흉악범같은 쿼리로 다시 테스트
Aggs 에 subAggs 하나씩 추가 하고 캐시 지우고 테스트
![]() |
![]() |
![]() |
API 평균 : 296.29 | API 평균 : 296.79 | API 평균 : 296.28 |
약 290ms 악마같은 쿼리다.. 이제 캐싱처리하고 테스트
![]() |
![]() |
![]() |
API 평균 : 58.62 | API 평균 : 58.26 | API 평균 : 57.9 |
이제야 속도차이가 좀 나는구먼..
다음은 Aggs 와 Query 를 별개로 실행했을때 테스트
case - 검색어인 country_code 가 입력되었을때
- multi_match + aggs쿼리를 실행 해서 aggs에 대한 캐시를 생성
- multi_match 쿼리 실행해서 도큐먼트 검색
이렇게 두번 검색
![]() |
![]() |
![]() |
API 평균 : 64.98 | API 평균 : 65.2 | API 평균 : 64.62 |
https://father-lys.tistory.com/37
[es] file system cache 를 이용한..
file system cache 를 이용한.. 꼼수를 부려보자 기존쿼리 + AGGS 를 사용하는데 file system cache 를 이용할 수 가 없다. 왜냐..면 size 가 0이 될 수 없는 상황.. 그래서 AGGS size 0을 먼저 실행하고 그다음 검색
father-lys.tistory.com
위에서 생각해봤던 꼼수가 먹히는 듯 보이는데 좀 더 확인해 봐야겠다.