2015-10-27 15 views
28

Używam Elasticsearch 1.4.4 w mojej maszynie programistycznej (pojedynczy notatnik). Wszystko jest ustawione jako domyślne, ponieważ nigdy nie zmieniłem żadnych ustawień.znak wodny o niskim dysku [??%] przekroczony na

Kiedy go uruchomić, zazwyczaj pojawia się następujący komunikat:

[2015-10-27 09:38:31,588][INFO ][node      ] [Milan] version[1.4.4], pid[33932], build[c88f77f/2015-02-19T13:05:36Z] 
[2015-10-27 09:38:31,588][INFO ][node      ] [Milan] initializing ... 
[2015-10-27 09:38:31,592][INFO ][plugins     ] [Milan] loaded [], sites [] 
[2015-10-27 09:38:34,665][INFO ][node      ] [Milan] initialized 
[2015-10-27 09:38:34,665][INFO ][node      ] [Milan] starting ... 
[2015-10-27 09:38:34,849][INFO ][transport    ] [Milan] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/10.81.1.108:9300]} 
[2015-10-27 09:38:35,022][INFO ][discovery    ] [Milan] elasticsearch/DZqnmWIZRpapZY_TPkkMBw 
[2015-10-27 09:38:38,787][INFO ][cluster.service   ] [Milan] new_master [Milan][DZqnmWIZRpapZY_TPkkMBw][THINKANDACT1301][inet[/10.81.1.108:9300]], reason: zen-disco-join (elected_as_master) 
[2015-10-27 09:38:38,908][INFO ][http      ] [Milan] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/10.81.1.108:9200]} 
[2015-10-27 09:38:38,908][INFO ][node      ] [Milan] started 
[2015-10-27 09:38:39,220][INFO ][gateway     ] [Milan] recovered [4] indices into cluster_state 
[2015-10-27 09:39:08,801][INFO ][cluster.routing.allocation.decider] [Milan] low disk watermark [15%] exceeded on [DZqnmWIZRpapZY_TPkkMBw][Milan] free: 58.6gb[12.6%], replicas will not be assigned to this node 
[2015-10-27 09:39:38,798][INFO ][cluster.routing.allocation.decider] [Milan] low disk watermark [15%] exceeded on [DZqnmWIZRpapZY_TPkkMBw][Milan] free: 58.6gb[12.6%], replicas will not be assigned to this node 
[2015-10-27 09:40:08,801][INFO ][cluster.routing.allocation.decider] [Milan] low disk watermark [15%] exceeded on [DZqnmWIZRpapZY_TPkkMBw][Milan] free: 58.6gb[12.6%], replicas will not be assigned to this node 
.... 

widzę wiele z tych „low watermark dysku ... przekroczone ...” wiadomości. Co poszło nie tak w moim przypadku? Jak to naprawić? Dzięki!

UPDATE

Przed tym poście, szukałem więc dla powiązanych wpisów. Znalazłem jeden związany z "wysokim znakiem wodnym ..." iw tym przypadku przestrzeń dyskowa jest niska. W moim przypadku sprawdziłem i na moim dysku pozostało jeszcze 56 GB.

UPDATE

Zgodnie z wejściem od Andrei Stefan, muszę zmienić ustawienia. Czy powinienem to zrobić w następujący sposób:

curl -XPUT localhost:9200/_cluster/settings -d '{ 
    "transient" : { 
     "cluster.routing.allocation.disk.threshold_enabled" : false 
    } 
}' 

Czy jest jakiś plik ustawień, który mogę edytować, aby go ustawić?

Dzięki!

+1

Wygląda na to, dysk twardy jest prawie pełny. Albo dlatego, że twoje indeksy stały się duże, czy gdzieś masz ogromne pliki dziennika. W tym drugim przypadku możesz usunąć pliki dziennika, aby zyskać trochę czasu. – Val

+1

Przeczytaj o tym tutaj: https://www.elastic.co/guide/en/elasticsearch/reference/current/disk.html, komunikat o wyjątku jest oczywisty, dlaczego nie jest tak oczywisty. Ta część dokumentacji powinna wyjaśnić pewne kwestie. –

+0

Val, zaktualizowałem swój post. Nie powinien to być problem z małą ilością miejsca na dysku. – curious1

Odpowiedz

34

Jeśli chcesz mnie mieć dużo dysku można dostroić ustawienia znaku wodnego:

cluster.routing.allocation.disk.watermark.low

Kontrola niska watermark na użycie dysku. Wartość domyślna to 85%, co oznacza, że ​​ES nie przydzieli nowych odłamków węzłom, gdy będą one miały więcej niż 85%. Można go również ustawić na bezwzględną wartość bajtu (np. 500 MB), aby uniemożliwić ES przydzielanie odłamków, jeśli jest mniejsza niż skonfigurowana ilość miejsca.

I

cluster.routing.allocation.disk.watermark.high

sterujących Odniesienia. Wartość domyślna to 90%, co oznacza, że ​​ES podejmie próbę przeniesienia odłamków do innego węzła, jeśli zużycie dysku węzła wzrośnie powyżej 90%. Można go również ustawić na wartość bezwzględną (podobną do znaku dolnego), aby przenieść odłamki raz mniej niż skonfigurowana ilość miejsca jest dostępna w węźle.

https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html

Uwaga:

Wartości procentowe odnoszą się wykorzystywane miejsce na dysku, podczas gdy wartości bajtów odnoszą się do wolnej przestrzeni dyskowej. Może to być mylące, ponieważ odwraca znaczenie wysokiego i niskiego. Na przykład sensowne jest ustawienie niskiego znaku wodnego na 10 gb i wysokiego znaku wodnego na 5 gb, ale nie na odwrót.

Na moim dysku 5TB mam ustawione:

# /etc/elasticsearch/elasticsearch.yml 
cluster.routing.allocation.disk.threshold_enabled: true 
cluster.routing.allocation.disk.watermark.low: 30gb 
cluster.routing.allocation.disk.watermark.high: 20gb 
+1

Należy pamiętać, że 'cluster.routing.allocation.disk.threshold_enabled: True' powinno być' cluster.routing.allocation.disk.threshold_enabled: true' (bez kapitału T) – seinecle

+0

Ściśle mówiąc nie jest to _error_ - co oznacza zarówno True, jak i true works, nawet jeśli standardem Java jest dekapitalizacja. W momencie pisania tego problemu problem był ważniejszy niż stosowanie się do stylu kodowania - przypuszczałem. Minęło trochę czasu ... – sastorsl

+0

Myślę, że w moim przypadku to nie zadziałało, dlatego komentowałem. – seinecle

0

dodałem następujące wiersze do mojego elasticsearch.yaml plików (elastic_search_folder \ config):

cluster.routing.allocation.disk.threshold_enabled: true 
cluster.routing.allocation.disk.watermark.low: 93% 
cluster.routing.allocation.disk.watermark.high: 95% 

z jakiegoś powodu, określając znak wodny w gb jak w drugiej odpowiedzi nie działa dla mnie. Upewnij się też, że Twój numer watermark.high jest mniejszy lub równy znakowi powodziowemu (zwykle jest ustawiony na 95%).

+0

Czy możesz mi powiedzieć, która wersja była uruchomiona? Dzięki ! –

+1

@ CensoredP.Censored Hej, 6.1.1 –

1

Wiem, że to stary post, ale mój komentarz może sprawić, że ktoś będzie szczęśliwy. Aby określić znak wodny w bajtach (gb lub mb), musisz dodać cluster.routing.allocation.disk.watermark.flood_stage do pliku ustawień elasticsearch - elasticsearch.yml. Kompletny przykład:

cluster.routing.allocation.disk.threshold_enabled: true 
    cluster.routing.allocation.disk.watermark.flood_stage: 200mb 
    cluster.routing.allocation.disk.watermark.low: 500mb 
    cluster.routing.allocation.disk.watermark.high: 300mb 

Uwaga: bez określania cluster.routing.allocation.disk.watermark.flood_stage nie będzie działać z wartości bajtów (GB lub MB)

Powiązane problemy