elasticsearch 1.4.3 으로 테스트해봤던 내용 공유
1. refresh_interval 값 성능
전에, refresh_interval 값이 성능에 영향이 있다고 해서 테스트해보았다.
refresh_inteval 로 주어진 값은 인덱싱(색인)을 얼마나 하는 주기를 의미한다. 일종의 flush 같은 개념인데,
길면 길수록 성능은 좋아지고, 짧을 수록 성능은 좋지 않다.
확실히 짧게 주는 것보다는 길게 주는 것이 좋다. cpu 5~15% 차이가 발생 했다.
그러나, 문제는 서비스의 영향도가 있어서 짧게 줄 수 없다..
로그 수집하는 정도나. refresh_interval을 길게 줄 수 있을 듯 하다.
curl -XPUT localhost:9200/movies/_settings -d '{
"index" : {
"refresh_interval" : "30s"
} }'
(좋은 참고 : http://blog.sematext.com/2013/07/08/elasticsearch-refresh-interval-vs-indexing-performance/ )
2. optimize 옵션 주기
optimize옵션을 주면 빠른 검색이 되도록 최적화 인덱싱을 한다. 호출 순간에서는 성능이 안좋아질 수 있으나, 장기적으로는 성능이 좋아진다.
cpu 1~3% 정도로 성능이 좋아졌다.
$ curl -XPOST 'http://localhost:9200/movie/_optimize'
(좋은 참고 : http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-optimize.html#optimize-parameters)
3. 삭제시 좋은 성능이 나오도록 튜닝 요소
인덱스를 이루는 세그먼트가 삭제로 인해서 큰 세그먼트로 compatction이 일어나도록 잘 튜닝할 수 있다.
서비스 성격에 맞게 변경해야 한다.
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules-merge.html
https://groups.google.com/forum/#!topic/elasticsearch/-j7bpgNMHMQ
4. Sorting 성능 개선
Sorting 성능을 개선할 수 있다. 서비스 성격에 맞게 변경해야 한다.
index.fielddata.cache: soft
indices.fielddata.cache.size: 80%
indices.fielddata.cache.expire: 24h
https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-fielddata.html
5. 검색 ThreadPool 설정
threadpool:
index:
type: fixed
size: 30
queue_size:-1
https://www.elastic.co/guide/en/elasticsearch/reference/1.x/modules-threadpool.html
6. (Data Node) JVM GC 알고리즘
다양한 방식으로 여러 GC 방법 (CMS, G1)으로 테스트 해봤으나, elasticsearch에서 제공하는 디폴트의 jvm 옵션(cms)이 최강이었음.
JVM8 최신으로 G1 알고리즘으로 Full GC 시간을 좀 줄일 수 있지만, 자주 조금 줄일 수 있었지만, CPU가 상당히 높게 나왔다. CMS는 다양한 옵션으로 했지만, 디폴트 옵션만큼의 CPU와 Full GC 시간을 이길 수 없었따.
(참고 : http://blog.sematext.com/2013/06/24/g1-cms-java-garbage-collector/)
7. (Data Node) JVM 메모리
JVM 메모리가 많을 수록 유리할 수 있지만, Full GC 시간이 점점 길어졌다. 한 JVM의 메모리는 작은 것이 가장 성능이 좋았다.
인터넷의 여러 회사 블로그에서 대용량 트래픽을 elasticsearch 대용량 메모리로 처리했다는 내용(linked, stackoverflow)을 참조해고 해봤는데, 서비스의 성격(CRUD)에 따라 다른 것 같다.
'Elasticsearch' 카테고리의 다른 글
[elasticsearch]에서 인덱스 타입 매핑 변경 및 동시에 여러 매핑 요청하기 (0) | 2015.05.23 |
---|---|
[elasticsearch] 모든 인덱스(색인)삭제 및 방어 (0) | 2015.05.23 |
[펌] Scaling Massive Elasticsearch clusters ! (0) | 2015.05.23 |
[elasticsearch] 매핑과 색인 (0) | 2015.05.22 |
[elasticsearch] shard, replica 개념 (0) | 2015.05.22 |