[elasticsearch] Elasticsearch 최대 메모리 크기를 변경하는 방법

기본 구성이 Elasticsearch 인 Apache 서버가 있으며 기본 구성의 최대 크기가 1GB 인 것을 제외하고는 모든 것이 완벽하게 작동합니다.

Elasticsearch에 저장할 문서가 너무 많지 않아서 메모리를 줄이고 싶습니다.

-XmxJava 구성에서 매개 변수 를 변경해야하는 것을 보았지만 방법을 모르겠습니다.

나는 이것을 실행할 수 있음을 보았다.

bin/ElasticSearch -Xmx=2G -Xms=2G

그러나 Elasticsearch를 다시 시작해야 할 때 이것은 손실됩니다.

Elasticsearch가 서비스로 설치된 경우 최대 메모리 사용량을 변경할 수 있습니까?



답변

에서 ElasticSearch> = 5 문서가있다 변경 위의 답변 중 아무도 나를 위해 일한 의미한다.

나는 변화 시도 ES_HEAP_SIZE/etc/default/elasticsearch와에 etc/init.d/elasticsearch,하지만 난 실행할 때 ps aux | grep elasticsearch출력은 여전히 보여 주었다 :

/usr/bin/java -Xms2g -Xmx2g # aka 2G min and max ram

다음과 같이 변경해야했습니다.

/etc/elasticsearch/jvm.options

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g
-Xmx1g
# the settings shipped with ES 5 were: -Xms2g
# the settings shipped with ES 5 were: -Xmx2g


답변

2016 년 11 월 24 일 업데이트 : Elasticsearch 5가 JVM 구성 방식을 변경 한 것 같습니다. 여기에서이 답변을 참조하십시오 . 아래 답변은 여전히 ​​5 미만 버전에 적용됩니다.

tirdadc, 아래 의견에 이것을 지적 해 주셔서 감사합니다.


기억력과 ES에 대해 궁금 할 때 다른 사람들과 공유하는 pastebin 페이지가 있습니다. 나를 위해 잘 작동했습니다 : http://pastebin.com/mNUGQCLY . 여기에도 내용을 붙여 넣겠습니다.

참조 :

https://github.com/grigorescu/Brownian/wiki/ElasticSearch-Configuration
http://www.elasticsearch.org/guide/reference/setup/installation/

메모리 및 파일 수 제한을 수정하려면 다음 파일을 편집하십시오. 이 지침은 Ubuntu 10.04를 가정하고 이후 버전 및 기타 배포 / OS에서 작동 할 수 있습니다. ( 편집 : Ubuntu 14.04에서도 작동합니다.)

/etc/security/limits.conf :

elasticsearch - nofile 65535
elasticsearch - memlock unlimited

/ etc / default / elasticsearch (CentOS / RH : / etc / sysconfig / elasticsearch) :

ES_HEAP_SIZE=512m
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited

/etc/elasticsearch/elasticsearch.yml :

bootstrap.mlockall: true


답변

Centos 7 또는 SystemD를 실행하는 다른 시스템에서이 작업을 수행하려는 경우 다음에서 변경하십시오.

/etc/sysconfig/elasticsearch

ES_HEAP_SIZE 줄의 주석 처리를 제거하고 값을 설정합니다. 예 :

# Heap Size (defaults to 256m min, 1g max)
ES_HEAP_SIZE=16g

(1g max에 대한 설명은 무시하십시오. 이것이 기본값입니다)


답변

지침 ubuntu 14.04:

sudo vim /etc/init.d/elasticsearch

세트

ES_HEAP_SIZE=512m

다음에서 :

sudo vim /etc/elasticsearch/elasticsearch.yml

세트:

bootstrap.memory_lock: true

자세한 내용은 파일에 주석이 있습니다.


답변

제 경우에는 이전 답변이 충분하지 않았습니다. 아마도 제가 데비안 8을 사용하고 있었기 때문에 이전 배포판을 참조했기 때문일 것입니다.

데비안 8 서비스 스크립트가 정상적으로에서 위치 수정 /usr/lib/systemd/system/elasticsearch.service및 추가 Environment=ES_HEAP_SIZE=8G
단지 다른 “환경 = *”라인 아래에.

이제 서비스 스크립트를 다시로드하고 서비스 systemctl daemon-reload를 다시 시작하십시오. 작업이 완료되어야합니다!


답변

https://github.com/elasticsearch/elasticsearch-servicewrapper에 있는 Elasticsearch의 Github 저장소에서 제공되는 서비스 래퍼를 사용하는 경우 elasticsearch-servicewrapper / service / elasticsearch.conf의 conf 파일이 메모리 설정을 제어합니다. elasticsearch.conf 상단에 매개 변수가 있습니다.

set.default.ES_HEAP_SIZE=1024

Elasticsearch의 할당 된 메모리를 줄이려면이 매개 변수를 “set.default.ES_HEAP_SIZE = 512″라고 말하면됩니다.

elasticsearch-wrapper를 사용하는 경우 elasticsearch.conf에 제공된 ES_HEAP_SIZE가 다른 모든 설정을 덮어 씁니다. 문서에서 힙 메모리를 elasticsearch.yml에서 설정할 수있는 것처럼 보였기 때문에이 작업을 수행하는 데 약간의 시간이 걸렸습니다.

서비스 래퍼 설정이 James의 예에서와 같이 / etc / default / elasticsearch와 같이 다른 위치에 설정되어 있으면 ES_HEAP_SIZE를 설정하십시오.


답변

제공된대로 RPM / DEB 패키지를 사용하여 ES를 설치 한 경우 (있는 것처럼) init 스크립트 ( /etc/init.d/elasticsearch on RHEL/CentOS)를 편집하여이를 조정할 수 있습니다 . 파일을 보면 다음과 같은 블록이 표시됩니다.

export ES_HEAP_SIZE
export ES_HEAP_NEWSIZE
export ES_DIRECT_SIZE
export ES_JAVA_OPTS
export JAVA_HOME

크기를 조정하려면 ES_HEAP_SIZE선을 다음과 같이 변경하십시오 .

export ES_HEAP_SIZE=xM/xG

(여기서 x는 할당 할 RAM의 MB / GB 수)

예:

export ES_HEAP_SIZE=1G

1GB를 할당합니다.

스크립트를 편집 한 후 저장하고 종료 한 다음 서비스를 다시 시작하십시오. 다음을 실행하여 올바르게 설정되었는지 확인할 수 있습니다.

ps aux | grep elasticsearch

다음을 리턴하는 Java 프로세스에서 -Xms 및 -Xmx 플래그를 확인합니다.

/usr/bin/java -Xms1G -Xmx1G

도움이 되었기를 바랍니다 🙂