본문 바로가기

elasticsearch module (엘라스틱서치 모듈에 대해서) * 원문링크 엘라스틱서치에는 다양한 기능을 담당하는 모듈들이 있고 각 모듈은 아래와 같은 설정이 있다. - static : 이 설정은 node level 에서 설정이 되야 하는 부분으로 elasticsearch.yml 파일에서 설정하거나 환경변수 또는 노드를 시작할 때 command line 옵션으로 설정도 가능하다. 이 옵션은 클러스터에 묶여 있는 모든 노드에 설정이 되어야 한다. - dynamic : 이 설정은 실행중인 클러스터에 동적으로 업데이트가 가능한 것으로 cluster-update-settings API 로 변경 간능하다. 모듈들의 종류는 다양하게 있으나 그 리스트들은 위 원문 링크를 통해서 확인하기 바라며, 모듈 중 이번에 확인할 모듈은 Thread Pool 이다. Thread Pool 노.. 더보기
엘라스틱서치 ( elasticsearch ) 순차 재시작 * 원문링크 * Rolling Restarts 클러스를 온라인 상태를 유지하면서 순차적인 재시작이 필요한 순간이 있다. * 엘라스틱서치 업그레이드 * 서버( OS, hardware update) 의 유지보수를 위해 원래 엘라스틱은 데이터가 복제되어 있고 고르게 분배되어 있다. 만약 하나의 노드를 끄게 되면 클러스터는 이를 즉시 감지하고 재배치를 시작한다. 비록 다운타임이 짧다 하더라도 샤드의 크기가 클 경우 재배치 하는데 꽤나 긴 시간이 걸리게 되는데 이 부분이 상당히 번거롭다. 이와 같은 번거로운 상황을 피하기 위해 외부의 작업(재시작이 필요한) 이 완료되기 까지 엘라스틱서치의 재배치 작업을 끌 수있다. 이 단계는 아래와 같다. 1. 가능하다면 새로운 데이터의 indexing 작업을 멈춘다. 이 작업이.. 더보기
엘라스틱서치 샤드 갯수? 기본적으로 shard 를 한번 생성하고 나면 추후 변경이 안된다.데이터는 계속 쌓이고 쌓이는 양에 대해서 가늠하기도 애매할 텐데 거기다가 변경(scale out) 도 안된다니.이렇다보니 최초 인덱스 생성시 shard 설정을 어떻게 해야 할까 고민이 되는 건 당연지사. 이리저리 뒤져 보면 여러가지 얘기들이 있다. 그 중 한 두개 꼽아 보자면* 샤드는 무조건 많다고 좋은건 아니다.당연한 얘기겠지만 분산되어 있는 서버, 시스템, 플랫폼 등등 그 양이 많아지면 관리하기는 점점힘들어 지고 그에 따른 관리도 쉽지가 않다.간략한 예로 샤드자체가 리소스들(memory, file 등)을 사용하고, 검색 요청 / 연산시 나눠져 있는 각 샤드를 다 확인해 봐야 하기 때문이다.* 최초 노드의 3배 정도 설정해라.이건 왜 그런.. 더보기
엘라스틱서치 ( elasticsearch ) 메모리 관련 (공식 홈피 번역) Heap: Sizing and Swapping기본으로 1GB 로 설정 되는데 이는 일반적으로 매우 작은 값이고, 이대로 사용할 경우 문제가 있을 수 있다.힙사이즈 변경하는 방법은 크게 2가지가 있다.- 환경 변수에 ES_HEAP_SIZE 를 설정 : 서버라 실행 될 때 해당 환경 변수를 읽는다.export ES_HEAP_SIZE=10g- 커맨드 라인에 인수로 줄 수 있다../bin/elasticsearch -Xmx10g -Xms10g* xms 와 xmx 는 동일하게 설정해 주느게 좋다 : 실행중에 사이즈를 변경하는 작업은 부담이다. ( 이는 jvm 공통)Give(less than) Half Your Memory to Lucene너무 큰 메모리 사이즈는 문제가 있다.메모리 구조에 빠른 연산을 제공해 주기 .. 더보기
엘라스틱서치 ( elasticsearch ) 릴리즈를 위한 하드웨어 고려 (공식 가이드 번역) Hardware개발단계를 일반적으로 따라 왔다면 개인 컴퓨터나 소규모 클러스에 엘라스틱서치를 구성 했을 것이다.하지만 실제 배포를 하게 되면 몇 가지 숙지해야 하는 것들이 있다. 필수 규칙은 아니나 실서비스에 적용하기시작할 때 알아 두면 좋은 방법들이다.Memory정렬과 집합연산을 위해서는 항상 메모리가 부족하기 때문에 충분한 메모리를 설정하는걸 추천한다.한 머신에 64GB 메모리가 이상적이다. 32GB,16GB 등도 괜찮으나 결국엔 메모리가 부족하게 될 것이다. 메모리에 대한 것은 다음 글에...Cpu상대적으로 의존도가 낮고 2~8코어정도가 일반적이다. 속도와 코어수 중 많은 코어수가 속도보단 추천할만하다.Disk이스크는 중요하다. 디스크는 상대적으로 느린 시스템이기 때문에 병의 원인이 될 가능성이 크.. 더보기
왓처 ( watcher ) 문서 내용 요약 - 1 Watch Active State왓치를 등록하면 즉시 active state 로 등록이 되며 그 설정에 따라 동작을 한다고 한다.inactive state 로 등록도 가능하며 active parameter 를 이용하면 된다.왓치 비활성화는 시스템 유지를 위한 시스템 다운, 왓치를 삭제 하는 대신 끄고 나중에 사용에 대비하는 경우등에 활욜 할 수 있다. Configuring the Default HTTP Timeouts모든 HTTP request 에 대해서는 2가지 관계있는 설정이 있다.- Connection Timeout : HTTP connection 연결이 되기까지의 시간- Read Timeout : connection 연결 후 request 에 대한 response 대기 시간10초로 기본값이 설정 .. 더보기
elasticsearch Watch Execution 왓치 실행 왓치를 등록하면 왓처가 적당한 trigger engine 에 등록하고자 하는 왓치의 트리거를 즉시 등록한다.schedule 을 가지고 있는 왓치들은 scheduler engine 에 등록이 된다. trigger engine 은 왓치 실행의 책임이 있다.trigger engine 은 master node 에서 실행 되고, 실행되고 있는 다른 왓치들과 분리된 쓰레드풀을 이용한다. 왓처가 트리거 되면, 왓처가 실행을 위해 큐작업을 한다. watch_record document 가 생성되고 watch history index 에 추가 되며, 상태를 awaits_execution 으로 설정한다. 실행이 시작 될 때, 왓치를 위해 watch execution context 를 왓치가 생성한다. execu.. 더보기
PHP json encode utf-8 변경 json 5.3 이하로는 json decode 시 JSON_UNESCAPED_UNICODE 를 사용할 수 없다. 검색질의 결과 이런게 있네. preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($msg, JSON_UNESCAPED_SLASHES)) 일단은 잘 되고 있음. 하하 JSON_UNESCAPED_SLASHES 도 5.4부터. 더보기