Elasticsearch 2.20 시스템 환경 설명

환경 변수


Elasticsearch는 Java에서 개발한 것이기 때문에 JVM의 환경 변수 JAVA_OPTS는 Elasticsearch에도 매우 중요합니다.JAVA_에서OPTS에서 Elasticsearch에 가장 중요한 매개 변수는 -Xmx에서 메모리를 사용할 수 있는 최대 매개 변수입니다. 일반적인 상황에서 큰 메모리는 Elasticsearch의 역할을 발휘할 수 있습니다. -Xmx는 물리적 메모리의 절반으로 설정하는 것을 권장합니다. 메모리 분배로 인한 성능 손실을 줄이기 위해 처음부터 초기 메모리와 최대 메모리를 물리적 메모리의 절반으로 설정하는 것이 좋습니다.그리고 Xms와 Xmx 두 개의 매개 변수.
JAVA_로 인해OPTS는 대부분의 경우 전체 기계 환경에 영향을 미치므로 기본 JAVA_를 유지하는 것이 좋습니다.OPTS, ES_JAVA_OPTS 환경 변수를 JAVA_로 설정OPTS 매개변수.
기본 프로필은elasticsearch/bin/elasticsearch입니다.in.sh 중
if [ "x$ES_MIN_MEM" = "x" ]; then
    ES_MIN_MEM=256m
fi
if [ "x$ES_MAX_MEM" = "x" ]; then
    ES_MAX_MEM=1g
fi
if [ "x$ES_HEAP_SIZE" != "x" ]; then
    ES_MIN_MEM=$ES_HEAP_SIZE
    ES_MAX_MEM=$ES_HEAP_SIZE
fi

JAVA_OPTS="$JAVA_OPTS -Xms${ES_MIN_MEM}"
JAVA_OPTS="$JAVA_OPTS -Xmx${ES_MAX_MEM}"

    ES_HEAP_SIZE 환경 변수는 Elasticsearch 자바 프로세스에 할당된 메모리 크기를 설정할 수 있습니다.최소 및 최대 값은 ES_를 설정하여 동일한 값에 할당됩니다.MIN_MEM(기본 256M) 및 ES_MAX_MEM(기본 1G)은 더미 메모리를 설정합니다(권장되지 않음).

시스템 구성


파일 설명자(File Descriptor) 파일 설명자는 프로세스에 열려 있는 모든 파일과 socket을 표시하는 간단한 정수입니다.첫 번째 열린 파일은 0, 두 번째 파일은 1입니다.열린 파일 설명자의 수를 늘리려면 32K 또는 64K로 설정하는 것이 좋습니다.
프로세스에서 열 수 있는 파일이 얼마나 되는지 테스트하기 위해 환경 변수 - Des.max-open-files는true로 설정됩니다.Elasticsearch는 시작할 때 열린 파일 설명자의 수를 인쇄합니다.또는 각 노드 정보를 보는 API를 통해 볼 수 있습니다.다음을 수행합니다.
GET localhost:9200/_nodes/stats/process?pretty
파일 저장:
Elasticsearch는 mmap fs/nio fs를 혼합하여 색인을 기본적으로 저장합니다.기본 운영체제 mmap 설정이 너무 낮을 수 있습니다. 메모리가 비정상적으로 넘칠 수 있습니다.Linux 시스템에서는 다음 명령을 통해 root 계정으로 제한을 추가할 수 있습니다.
sysctl -w vm.max_map_count=262144
설정을 영구적으로 적용하려면/etc/sysctl을 설정할 수 있습니다.conf의 vm.max_map_count 값.
주의: 설치 패키지 (.deb,.rpm) 를 사용하여 설치하면 이 값은 자동으로 설정됩니다.

파일 시스템의 스토리지 유형


파일 시스템에 따라 스토리지 유형이 다릅니다.이 매개 변수는 일반적으로 자동으로 선택됩니다. Windows 64bit 운영체제는 일반적으로 mmapfs이고, Windows 32비트 운영체제는 일반적으로simplefs이며, Elasticsearch는 기본적으로 (niofs/mmapfs 혼합 방식) 입니다.이 매개 변수는 모든 인덱스를 적용하도록 설정할 수 있습니다. 설정 파일은config/elasticsearch입니다.yml.
구성 항목: index.store.type: niofs
색인을 만들 때 유형을 지정할 수도 있습니다.
PUT localhost:9200/my_index{
  "settings": {
    "index.store.type": "niofs"
  }
}

주의: 이 설정은 미래에 삭제될 수 있습니다.
선택 가능한 매개변수
Simple FS(Simplefs System) Simplefs 유형은 Lucene SimpleFs Directory에 매핑된 간단한 랜덤 액세스 파일 스토리지 시스템입니다.이 실현의 병발 성능은 비교적 떨어진다.색인을 오래 유지해야 할 때niofs를 사용하는 것이 좋습니다.NIO FS(NIO 파일 시스템) niofs 형식은 NIO를 통해 슬라이스 인덱스 파일을 파일 시스템에 쓰는 것입니다(Lucene NIOFSDirectory에 매핑).그것은 다중 스레드가 동시에 파일을 읽을 수 있도록 허용한다.JAVA 구현에 오류가 있으므로 Windows 시스템에서는 사용하지 않는 것이 좋습니다.MMap FS(메모리 매핑 파일 시스템) mmapfs 형식은 매핑 파일을 메모리(MMAP)에 저장하여 슬라이스 인덱스를 파일 시스템에 저장합니다(Lucene MMapDirectory에 매핑).메모리 매핑 과정에서 매핑된 파일 크기와 같은 가상 메모리 공간이 구분됩니다.이 클래스를 사용하기 전에 가상 주소 공간이 충분한지 확인하십시오.
default_fs
기본 유형은 NiO FS와 mmapfs를 혼합하면 운영 체제가 가장 잘 일치하는 파일 시스템을 자동으로 선택합니다.현재 Lucene의termdictionary와docvalues만 메모리 매핑 방식으로 운영체제에 대한 영향을 줄인다.모든 다른 방법은 Lucene niofsdirectory를 사용하여 엽니다.
본고는 세크람드(secisland)가 창작한 것으로 작가와 출처를 명시해 주십시오.

메모리 설정


현대 운영체제의 대부분은 파일 시스템 캐시로 가능한 한 많은 메모리를 사용하고 교환 구역(swap)을 통해 프로그램에서 잠시 사용하지 않는 메모리를 옮긴다.이로 인해 Elasticsearch 프로세스 메모리가 너무 많이 전환될 수 있습니다.교환 구역(swap)은 성능과 안정성에 일정한 영향을 미치기 때문에 Elasticsearch에서는 교환 구역을 최대한 피해야 한다.
Elasticsearch 설정에서 다음 세 가지 방법을 선택할 수 있습니다.
1. 스왑 파티션 비활성화
이것은 가장 간단한 방법이다.
linux 시스템에서 명령:sudo swapoff-a를 통해 잠시 금지할 수 있습니다.영구적으로 사용하지 않으려면/etc/fstab 파일을 편집하고 swap이 포함된 줄을 주석해야 합니다.
윈도우즈 시스템에서는 제어판 -> 시스템 -> 고급 시스템 설정 -> 고급 -> 성능 설정 -> 고급 -> 가상 메모리를 통해 설정할 수 있습니다.
2. swappiness 설정
sysctl 설정 vm를 확인하십시오.swappiness 매개 변수는 0입니다. 일반적인 상황에서 교환의 빈도를 낮추고 긴급한 상황에서 교환을 사용합니다.
주의: 커널 3.5-rc1 및 상기 버전에서 vm를 설정하면.swappiness는 0입니다. OOM은 메모리 교환 대신 프로세스를 죽이는 방식으로 vm를 설정해야 합니다.swappiness는 1입니다. 긴급 상황에서 교환이 사용됩니다.
3. mlockall 사용
유닉스나 Linux 시스템에 있거나virtuallock이 설정된 Windows는 프로세스 주소 공간을 RAM에 잠그고 Elasticsearch 메모리가 교환되지 않도록 할 수 있습니다.config/elasticsearch에서 사용할 수 있습니다.yml 설정:
bootstrap.mlockall: true
시작 후 Elasticsearch를 실행하면api를 통해 mlockall이 성공적으로 적용되었는지 확인할 수 있습니다.
값의 mlockall이false로 되돌아오면 mlockall 설정이 실패했음을 의미합니다.가장 가능성이 있는 이유는 Linux/Unix 시스템에서 Elasticsearch를 실행하는 사용자가 설정할 권한이 없기 때문이다.이것은 루트 사용자를 통해ulimit-l unlimited를 실행해서 설정할 수 있습니다.또 다른 가능한 이유는 mlockall이 임시 디렉터리 (일반적으로/tmp) 에서 적용되지 않기 때문이다.이것은 새로운 임시 디렉터리를 지정해서 해결할 수 있습니다. Elasticsearch를 시작할 때 지정합니다.
./bin/elasticsearch -Djna.tmpdir=/path/to/new/dir
참고: 시스템에서 사용할 수 있는 메모리가 없을 때, Elasticsearch에서 더 많은 메모리를 할당하려고 시도할 때, mlockall은 JVM이나 셸 세션을 종료할 수 있습니다.
세크랜드(secisland)는 Elasticsearch의 최신 버전의 각종 기능을 점차적으로 분석할 것이니 기대해 주십시오.

좋은 웹페이지 즐겨찾기