2014-11-25 15 views
8

W próbie zwiększenia JVM wielkość sterty dla Elasticsearch na pole okna, ja zdefiniowano następującą zmienną środowiskową:Elasticsearch donosi domyślny rozmiar pamięci sterty po ustawieniu zmiennej środowiskowej

ES_HEAP_SIZE = 6g

(Maszyna posiada 12G RAM w sumie).

Uruchomiłem ES i zapytałem o jego wykorzystanie pamięci za pomocą polecenia _nodes/stat HTTP GET. Wydaje się jednak, że to wciąż przy 1GB:

mem: {

heap_used_in_bytes: 1032367576, 
heap_used_percent: 99, 
heap_committed_in_bytes: 1037959168, 
heap_max_in_bytes: 1037959168, 
... 

Gdyby nie ES dostosować jego wielkość pamięci sterty po restarcie?

Odpowiedz

6

Po odinstalowaniu i ponownym zainstalowaniu usługi Windows Elasticsearch, poprawnie zwiększyła wielkość sterty maszyny JVM. Ponowne uruchomienie go bez ponownej instalacji usługi nie działało.

+0

To działało! Używam systemu Windows Server 2012 i miałem ten sam problem (mimo że korzystałem ze zmiennych środowiskowych ES_MIN_MEM i ES_MAX_MEM - dodałem ES_HEAP_SIZE dla dobrego pomiaru). Próbowałem ponownie uruchomić (w nowym oknie Powershell Administrator, aby odebrać zmiany env) bez skutku. Użycie {ES_HOME} \ bin \ service.bat stop/remove/install/start (jako Administrator) pomyślnie zmieniło alokację pamięci. Musi on zbierać zmienne środowiskowe podczas instalacji, a nie w czasie wykonywania. Dziękujemy za przesłanie własnej odpowiedzi! –

+0

Dziękuję. Próbowałem już wielu innych rzeczy i to zadziałało! –

0

Dla Elastic Search 1.5

Jednym ze sposobów, aby to zrobić jest do edycji plik /bin/elasticsearch.in.sh do domyślnego na inną wartość, że 1g. Dla Twojego przykładu zmień ES_MAX_MEM=1g dla ES_MAX_MEM=6g. Po zakończeniu edycji uruchom ponownie wyszukiwanie elastyczne i powinieneś być dobry.

#!/bin/sh 

ES_CLASSPATH=$ES_CLASSPATH:$ES_HOME/lib/elasticsearch-1.5.0.jar:$ES_HOME/lib/*:$ES_HOME/lib/sigar/* 

if [ "x$ES_MIN_MEM" = "x" ]; then 
    ES_MIN_MEM=256m 
fi 
if [ "x$ES_MAX_MEM" = "x" ]; then 
    ES_MAX_MEM=6g 
fi 
if [ "x$ES_HEAP_SIZE" != "x" ]; then 
    ES_MIN_MEM=$ES_HEAP_SIZE 
    ES_MAX_MEM=$ES_HEAP_SIZE 
fi 
+0

@ jasonrhasss Zmodyfikowałem w /bin/elasticsearch.in.sh, ale nie jest to usuwanie w elastycznym, nadal używa tylko 1g. – RamRajVasavi

+0

@RamRajVasavi czy instalowałeś przez yum lub apt-get? Może to być użycie innego skryptu startowego. Również - używasz wersji 1.5? – jasonrhaas

10

Z notatek na running ES as a service on windows:

Pamiętaj, że dostępne opcje konfiguracyjne środowiska podczas instalacji są kopiowane i będą wykorzystywane podczas cyklu życia usługi. Oznacza to, że wszelkie zmiany wprowadzone w nich po instalacji nie zostaną wykryte, chyba że usługa zostanie ponownie zainstalowana.

Jeśli nie chcesz odinstalować i ponownie zainstalować, można użyć Service Manager, aby dokonać zmiany. Uruchom >service manager

Następnie należy wybrać zakładkę 'Java'

Java Tab

zmienić ustawienia puli pamięci, naciśnij 'Zastosuj' i ponownie uruchomić usługę.

enter image description here

+0

Czy to przesłoni wszystkie wcześniej skonfigurowane zmienne środowiskowe? – bradvido

+1

Tak, początkowo skonfigurowane zmienne środowiskowe służą do początkowej konfiguracji usługi. Dokonanie tutaj zmian spowoduje zastąpienie dowolnych zmiennych środowiskowych. – Akshay

0

Aby uniknąć ponownego zainstalowania usługi można bezpośrednio zmienić wartości w rejestrze. Są nieco trudne do znalezienia:

enter image description here

Oczywiście, trzeba ponownie uruchomić usługę po zmianie tych ustawień.