Elascticsearch 노드 최적화: 더미 메모리 크기 조정

2048 단어
내 설정: 4개의 서버로 구성된 Elasticsearch 집단은 각 서버가 하나의 노드로만 되어 있다.데이터 노드 2대, 클라이언트 노드 1대, 마스터 노드 메모리 1대는 모두 64G 시작 명령입니다.
docker run -d \
 --name=espn-50 \
-p 9200:9200 \ 
-p 9300:9300  \
-v \
 /var/espn/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ 
-v \
/var/espn/data:/usr/share/elasticsearch/data elasticsearch:5.6.3

4개의 노드 시작 명령은 92009300 포트를 노출하고elasticsearch를 마운트합니다.yml 및 데이터 디렉터리.3개월간의 데이터를 시뮬레이션하여 매일 하나의 인덱스, 인덱스 수량 90, 인덱스마다 200W~300W의 데이터가 다르다.
데이터 양이 증가함에 따라 서버 CPU가 너무 많이 사용되고 있음(맞아, 그 두 데이터 노드)
두 데이터 노드에 대한 elasticsearch 로그를 보려면 다음과 같이 하십시오.
 [gc][1779997] overhead, spent [45.2s] collecting in the last [45.8s] // , 

노드 상황 조회하기:
curl 'localhost:9200/_cat/nodes?v=pretty'

데이터 노드의 힙을 발견합니다.퍼센트 99.조회 자료를 통해 나는 대략 이렇게 요약했다.
  • ES 자체는 Java 프로젝트이고 Java 프로젝트인 이상 JVM에서 실행될 것입니다. 현재 메모리가 가득 찼습니다..
  • 메모리가 가득 차서 Elasticsearch는 GC를 시도하고 있지만 매번 GC는 방출 효과가 없기 때문에 GC에서 CPU를 계속 사용하기 때문에 CPU 사용이 심각하다..
  • 인덱스 수량이 비교적 많은데 ES는 역렬 인덱스와segment 같은 메커니즘을 채택하여 비교적 많은 인덱스와 인덱스 데이터가 반드시 사용해야 하는 상황에서 JVM을 조정해야 한다. 즉, JVM을 최적화하는 것이다
  • ES의 기본 Heap은 너무 작아서 일반적으로 빅데이터 저장을 하는 데 부족하고 대략적인 확률은 수동으로 조정해야 한다(2.X 버전은 기본 1G, 5.6.3은 2G)

  • 인터넷의 자료를 한 바퀴 뒤졌는데 홈페이지를 포함해서 알이 아프다는 사실을 발견했다. 버전별로 ES가 JVM을 조정하는 방법이 다르다.제가 사용한 것은 Elasticsearch 5.6.3입니다. 다시 한 번 강조합니다.
    해결 방법은 간단합니다.elasticsearch의config 폴더에서 jvm를 고쳐 씁니다.옵션 파일이면 됩니다.(5.6.3의docker 용기에 이 파일이 없습니다. 용기에 마운트해도 효력이 발생합니다.)
    jvm.options:
    -Xms10g
    -Xmx10g
    

    익숙하지 않다면 JVM에 대한 지식을 배워보세요.
    시작 명령:
    docker run -d \
     --name=espn-50 \
    -p 9200:9200 \ 
    -p 9300:9300  \
    -v \
     /var/espn/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ 
    -v \
     /var/espn/config/jvm.options:/usr/share/elasticsearch/config/jvm.options \ 
    -v \
    /var/espn/data:/usr/share/elasticsearch/data elasticsearch:5.6.3
    

    jvm.옵션도docker 용기에 마운트됩니다.주의, jvm.옵션의 권한은 읽을 수 있고 쓸 수 있고 실행할 수 있어야 합니다.

    좋은 웹페이지 즐겨찾기