Как исправить время ожидания чтения в Elasticsearch
я использовал Elasticsearch-1.1.0 для индексации твитов. Процесс индексирования в порядке. Затем я обновил версию. Теперь я использую Elasticsearch-1.3.2, и я получаю это сообщение случайным образом:
Exception happened: Error raised when there was an exception while talking to ES.
ConnectionError(HTTPConnectionPool(host='127.0.0.1', port=8001): Read timed out. (read timeout=10)) caused by: ReadTimeoutError(HTTPConnectionPool(host='127.0.0.1', port=8001): Read timed out. (read timeout=10)).
снимок рандоме:
Happened --33s-- Happened --27s-- Happened --22s-- Happened --10s-- Happened --39s-- Happened --25s-- Happened --36s-- Happened --38s-- Happened --19s-- Happened --09s-- Happened --33s-- Happened --16s-- Happened
--XXs-- = after XX seconds
может кто-нибудь указать, как исправить Read timed out
проблема?
спасибо.
3 ответов
трудно дать прямой ответ, так как ошибка, которую вы видите, может быть связана с клиентом, который вы используете. Однако решение может быть одним из следующих:
1.Увеличьте тайм-аут по умолчанию глобально при создании клиента ES, передав параметр timeout. Пример в Python
es = Elasticsearch(timeout=30)
2.Установить тайм-аута по запросу клиента. Взято с Elasticsearch в Python с документами ниже.
# only wait for 1 second, regardless of the client's default
es.cluster.health(wait_for_status='yellow', request_timeout=1)
вышеуказанное даст кластеру некоторые дополнительное время для ответа
попробуйте это:
es = Elasticsearch(timeout=30, max_retries=10, retry_on_timeout=True)
это может не полностью избежать ReadTimeoutError
, но это минимизирует их.
для чего это стоит, я обнаружил, что это, похоже, связано с состоянием сломанного индекса.
очень сложно надежно воссоздать эту проблему, но я видел ее несколько раз; операции выполняются как обычно, за исключением некоторых, которые периодически, похоже, зависают ES (в частности, обновляя индекс).
удаление индекса (curl -XDELETE http://localhost:9200/foo
) и переиндексация с нуля исправила это для меня.
Я рекомендую периодически очищать и переиндексировать, если вы видите это поведение.