Elasticsearch 인덱스(쓰기) 속도 최적화

3708 단어 Elasticsearch

1. 색인 필드 축소


es에서 필요한 필드만 보존합니다. 필드를 줄이면 문서의 크기를 효과적으로 줄이고 쓰기 속도를 높일 수 있습니다.

2. 편수와 사본수를 합리적으로 설정한다


7.* 기본 슬라이스 1 및 사본 1개.Elasticsearch는 한 조각의 크기가 20~40GB 정도 조각 개수 권장>= 집단 노드의 개수를 권장하지만, 색인이 시간(성능 요구 사항 쓰기 > 성능 요구 사항 검색 시)보다 1개 조각을 사용할 수 있으며, 너무 많은 조각도 쓰기 성능에 영향을 미칠 수 있다고 공식적으로 권장합니다.
조각 크기는 검색 검색에 매우 중요하다.
  • 한편, 색인에 분배된 섹션이 너무 많으면 Lucene 섹션이 작아져 비용이 증가한다.여러 개의 조회를 동시에 진행할 때, 많은 작은 부분도 조회의 토출량을 낮출 수 있다.
  • 다른 한편, 너무 큰 분할은 검색 성능이 떨어지고 고장 복구 시간이 길어진다.

  • 대량 인덱스 문서 앞에서 복사본 수를 0으로 설정하고 인덱스가 완료되면 원래 값을 복원할 수 있습니다.
    "number_of_replicas":1
    "number_of_shards":1

    3. 색인 새로 고침 간격refresh_interval


    기본적으로 refresh_interval은 1s로 데이터가 1초 동안 기록되면 검색할 수 있습니다. 매번 색인된refresh는 새로운 Lucene 세그먼트를 생성합니다. Lucene 세그먼트는 바로 segment입니다. segment는 일정한 조건을 복합한 후에 자동으로 통합되기 때문에 빈번한segmentmerge 행위를 초래할 수 있습니다. 만약에 특별히 높은 검색 실시간성이 필요하지 않으면 색인refresh 주기를 낮춰야 합니다. -1: 새로 고침 금지.대량 인덱스 문서 앞에서 refresh_interval 설정은 -1입니다. 완성되면 기본값으로 수정됩니다.나의 장면은 매일 전량 동기화되기 때문에, 이곳은refresh_interval 설정 120s
    "refresh_interval": "120s"

    만약refresh_interval은 -1로 설정되어 있으며,es의 정시 작업은 실행되지 않습니다.그러나es는versionMap에 따라refresh 동작을 강제로 합니다. 버퍼가 가득 차면refresh 동작을 터치합니다.30초마다 타이머가 있어shard Indexing Buffer Size 크기를 검사하고, 최종적으로 updateShard Buffers 방법으로 refresh를 호출합니다.

    4.translog 설정


    translog 파일이 점점 커지면서 메모리에 있는 데이터를 디스크에 리셋하는 것을 고려해야 합니다. 이 과정을flush라고 합니다.기본 설정에서translog의 지속화 정책은:request, 모든 요청은 "flush", 비동기 리셋, 리셋 시간 120s입니다.
    "index.translog.durability": "async"
    "index.translog.sync_interval": "120s"

    5. 스레드 탱크 대기열


    쓰기 대기열이 가득 차면 es는 색인 이벤트를 받아들이지 않고 쓰기 대기열의 크기를 적당히 증가합니다. 기본값은 200입니다.스레드 탱크의 크기는 정부에서 수정을 건의하지 않는다.
    thread_pool.write.queue_size: 500

    6.es를 사용하여 자동으로 생성된 id


    업데이트 작업이 없을 때, 가능한 한 es가 자동으로 생성한 id를 사용하십시오. index의 문서가 특정한 id를 사용하면, ES는 같은shard에 같은 ID의 문서가 존재하는지 확인해야 합니다. 이것은 상당히 비싼 작업이고 문서의 수가 증가함에 따라 비용이 증가합니다.자동 생성 id를 사용하면 ES에서 이 검사를 건너뛰면 Index 속도가 빨라집니다.그러나 업데이트 작업이 필요할 때는 적용되지 않습니다.

    7. Indexing 버퍼 크기


    대량의 색인 작업을 실행할 때, indices.memory.index_buffer_size의 기본 설정이 부족할 수 있습니다. 이것은 메모리, 단일 노드에 있는shard 수량과 관련이 있습니다. 이 값을 적당히 늘리고, 이 값을 늘리고, segment를 줄이면merge를 줄일 수 있습니다.기본 크기는 10% 48mb
    indices.memory.index_buffer_size: 20%
    indices.memory.min_index_buffer_size: 96mb

    8.jvm.options


    Xmx와 Xms의 크기는 기본적으로 1g이며, 이 값을 적당히 늘릴 수 있습니다.
    -Xms2g
    -Xmx2g

    9. 스와핑 사용 안 함


    ES의 공식 문서에서 Disabled Swapping。 swapoff-a를 잠시 비활성화하고 기계를 다시 시작하면 복구할 것을 요구합니다.swapping을 영구적으로 닫으려면 /etc/fstab 파일을 편집해야 합니다. swap의 줄을 포함하는 주석을 삭제합니다.
    참조 문서:
  • https://www.cnblogs.com/eviltuzki/p/8439036.html
  • https://blog.csdn.net/wmj2004/article/details/80804411
  • https://blog.csdn.net/u012133048/article/details/93408374?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
  • https://blog.csdn.net/HaixWang/article/details/80846749?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
  • https://www.cnblogs.com/MyOceansWeb/p/12653965.html
  • https://blog.csdn.net/laoyang360/article/details/85109769
  • https://blog.csdn.net/laoyang360/article/details/97695931
  • 7.*공식 문서
  • 좋은 웹페이지 즐겨찾기