2013-02-21 14 views
6

Zrobiłem elastyczny klaster z dużymi danymi, a klient może wysłać do niego zapytanie wyszukiwania. Czasami klaster kosztuje dużo czasu, aby poradzić sobie z jednym żądaniem. Moje pytanie brzmi: czy istnieje interfejs API do zabicia określonego wątku, który kosztuje zbyt dużo czasu?Jak zabić wątek wyszukiwania w klastrze elasticsearch? Czy jest w tym jakieś API?

+0

Ja też chciałbym znać odpowiedź na to pytanie; nie ma żadnego sposobu na zarządzanie/monitorowanie zapytań w ES po przejrzeniu źródła, więc byłoby miło, gdyby ktoś tu zagrał. – MatthewJ

+0

Poprosiłem również grupy googlegroups, a jeden z nich powiedział, że nie może zatrzymać istniejącego żądania i sugeruje, że ustawię limit czasu dla zapytania, aby zapobiec długotrwałym żądaniom. – Hoony

Odpowiedz

2

Chciałem odpowiedzieć na tę odpowiedź teraz, gdy elasticsearch 1.0.0 został wydany. Z przyjemnością ogłaszam, że wprowadzono nową funkcjonalność, która implementuje pewną ochronę sterty, zwaną wyłącznikiem.

Przy aktualnej implementacji wyłącznik próbuje przewidzieć, ile danych ma zostać załadowanych do bufora danych pól, a jeśli jest większy niż limit (domyślnie 80%), wywoła to wyłącznik, a tam przez zabicie zapytania.

Istnieją dwa parametry można ustawić, czy chcesz je zmodyfikować:

indices.fielddata.breaker.limit 

indices.fielddata.breaker.overhead 

napowietrznej jest stała, która jest wykorzystywana do oszacowania, ile danych zostanie załadowany do pamięci podręcznej pola; domyślnie jest to 1.03.

Jest to ekscytujący krok naprzód w zakresie elastycznego wyszukiwania i funkcji, na którą czekam od miesięcy.

Jest to żądanie pobrania, jeśli chcesz zobaczyć, jak zostało zrobione; dzięki dakrone za wykonanie tego!

https://github.com/elasticsearch/elasticsearch/pull/4261

Nadzieja to pomaga, MatthewJ

2

Obecnie nie jest możliwe, aby zabić lub powstrzymać długich zapytań uruchomiony, lecz Elasticsearch ma zamiar dodać interfejs API do zarządzania zadaniami, aby to zrobić. API prawdopodobnie zostanie dodane w Elasticsearch 5.0, może w 2016 lub później.

patrz Task management 1 i Task management 2.

Powiązane problemy