Mam serwer Apache z domyślną konfiguracją Elasticsearch i wszystko działa idealnie, poza tym, że domyślna konfiguracja ma maksymalny rozmiar 1 GB.
Nie mam tak dużej liczby dokumentów do przechowywania w Elasticsearch, więc chcę zmniejszyć ilość pamięci.
Widziałem, że muszę zmienić -Xmx
parametr w konfiguracji Javy, ale nie wiem jak.
Widziałem, że mogę to wykonać:
bin/ElasticSearch -Xmx=2G -Xms=2G
Ale kiedy będę musiał ponownie uruchomić Elasticsearch, zostanie to utracone.
Czy można zmienić maksymalne użycie pamięci, gdy Elasticsearch jest zainstalowany jako usługa?
elasticsearch
Patxi1980
źródło
źródło
index.number_of_shards: 1 index.number_of_replicas: 0
ten sposób oszczędzasz pamięć i procesor, nie wykonując niepotrzebnej pracy .Odpowiedzi:
W ElasticSearch> = 5 dokumentacja uległa zmianie , co oznacza, że żadna z powyższych odpowiedzi nie zadziałała.
Próbowałem zmieniających
ES_HEAP_SIZE
się/etc/default/elasticsearch
wetc/init.d/elasticsearch
, ale kiedy wpadłemps aux | grep elasticsearch
wyjście nadal pokazał:/usr/bin/java -Xms2g -Xmx2g # aka 2G min and max ram
Musiałem wprowadzić te zmiany w:
/etc/elasticsearch/jvm.options
źródło
/usr/local/opt/elasticsearch/libexec/config/jvm.options
/usr/local/etc/elasticsearch/jvm.options
Zaktualizowano 24 listopada 2016 r . : Elasticsearch 5 najwyraźniej zmienił sposób konfigurowania maszyny JVM. Zobacz tę odpowiedź tutaj . Poniższa odpowiedź nadal dotyczy wersji <5.
tirdadc, dziękuję za wskazanie tego w komentarzu poniżej.
Mam stronę z pastebinem, którą udostępniam innym, gdy zastanawiam się nad pamięcią i ES. Dla mnie zadziałało dobrze: http://pastebin.com/mNUGQCLY . Wkleję tutaj również zawartość:
Bibliografia:
https://github.com/grigorescu/Brownian/wiki/ElasticSearch-Configuration http://www.elasticsearch.org/guide/reference/setup/installation/
Edytuj następujące pliki, aby zmodyfikować limity pamięci i liczby plików. Te instrukcje zakładają, że Ubuntu 10.04 może działać na nowszych wersjach i innych dystrybucjach / systemach operacyjnych. ( Edycja : działa to również w przypadku Ubuntu 14.04.)
/etc/security/limits.conf :
/ etc / default / flexiblesearch (na CentOS / RH: / etc / sysconfig / flexiblesearch) :
/etc/elasticsearch/elasticsearch.yml :
źródło
/etc/default
sekcji `/ etc / sysconfig '/etc/sysconfig/elasticsearch
jest odpowiednim miejscem do wprowadzenia tych zmian. RPM zapewnia nawet domyślną wersję tego pliku./etc/security/limits.d/elasticsearch.conf
Dla każdego, kto chce to zrobić na Centos 7 lub z innym systemem z SystemD, możesz to zmienić w
Odkomentuj wiersz ES_HEAP_SIZE i ustaw wartość, np .:
(Zignoruj komentarz o 1g max - to ustawienie domyślne)
źródło
Instrukcje dla
ubuntu 14.04
:sudo vim /etc/init.d/elasticsearch
Zestaw
ES_HEAP_SIZE=512m
potem w:
sudo vim /etc/elasticsearch/elasticsearch.yml
Zestaw:
bootstrap.memory_lock: true
Aby uzyskać więcej informacji, w plikach znajdują się komentarze
źródło
Poprzednie odpowiedzi były w moim przypadku niewystarczające, prawdopodobnie dlatego, że korzystam z Debiana 8, podczas gdy zostały one odesłane do jakiejś wcześniejszej dystrybucji.
W Debianie 8 zmodyfikuj skrypt serwisowy, który normalnie umieszcza się w
/usr/lib/systemd/system/elasticsearch.service
, i dodajEnvironment=ES_HEAP_SIZE=8G
tuż pod innymi liniami "Environment = *".Teraz przeładuj skrypt usługi za pomocą
systemctl daemon-reload
i uruchom ponownie usługę. Praca powinna być wykonana!źródło
/usr/
?Jeśli używasz opakowania usługi udostępnionego w repozytorium Github Elasticsearch, które można znaleźć pod adresem https://github.com/elasticsearch/elasticsearch-servicewrapper , wówczas plik conf w elasticsearch-servicewrapper / service / flexiblesearch.conf kontroluje ustawienia pamięci. U góry pliku flexiblesearch.conf znajduje się parametr:
Po prostu zmniejsz ten parametr, powiedzmy do „set.default.ES_HEAP_SIZE = 512”, aby zmniejszyć ilość przydzielonej pamięci Elasticsearch.
Zwróć uwagę, że jeśli korzystasz z elastycznego wyszukiwania, ES_HEAP_SIZE podany w elasticsearch.conf ZASTĘPUJE WSZYSTKIE INNE USTAWIENIA. Zajęło mi to trochę czasu, ponieważ z dokumentacji wydawało się, że pamięć sterty można ustawić z pliku flexiblesearch.yml.
Jeśli ustawienia opakowania usługi są ustawione w innym miejscu, na przykład w / etc / default / flexiblesearch, jak w przykładzie Jamesa, ustaw tam ES_HEAP_SIZE.
źródło
export ES_HEAP_SIZE=1G; bin/elasticsearch -d
Jeśli zainstalowałeś ES przy użyciu dostarczonych pakietów RPM / DEB (jak się wydaje), możesz to zmienić, edytując skrypt inicjujący (
/etc/init.d/elasticsearch on RHEL/CentOS
). Jeśli zajrzysz do pliku, zobaczysz blok z następującymi elementami:Aby dostosować rozmiar, po prostu zmień
ES_HEAP_SIZE
linię na następującą:(gdzie x to liczba MB / GB pamięci RAM, którą chcesz przydzielić)
Przykład:
Przydzieliłby 1 GB.
Po wyedytowaniu skryptu zapisz i wyjdź, a następnie uruchom ponownie usługę. Możesz sprawdzić, czy został ustawiony poprawnie, uruchamiając następujące polecenie:
I sprawdzanie flag -Xms i -Xmx w procesie java, który zwraca:
Mam nadzieję że to pomoże :)
źródło
Nie ustawiaj Xmx powyżej wartości odcięcia, której JVM używa do skompresowanych wskaźników obiektów (skompresowane oops), dokładna wartość odcięcia jest różna, ale wynosi blisko 32 GB.
Możliwe jest również ustawienie wielkości sterty za pomocą zmiennej środowiskowej
źródło
W katalogu głównym ścieżki elastycznej wyszukiwania, tj. Zazwyczaj
/usr/share/elasticsearch
znajduje się plik konfiguracyjnybin/elasticsearch.in.sh
. Edycja parametrówES_MIN_MEM
,ES_MAX_MEM
w tym pliku do zmian-Xms2g
,-Xmx4g
odpowiednio. I upewnij się, że ponownie uruchomiłeś węzeł po tej zmianie konfiguracji.źródło
Jeśli używasz serwera Windows, możesz zmienić zmienną środowiskową, zrestartować serwer, aby zastosować nową wartość środowiska i uruchomić Elastic Service. Więcej szczegółów w artykule Instalacja elastyczna w systemie Windows Server
źródło
W elasticsearch 2.x:
Przejdź do bloku kodu
Odkomentuj ostatnią linię jak
źródło