Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Устранение неполадок ›Устранение распространённых проблем кластера

Отклоненные запросы

Когда Elasticsearch отклоняет запрос, он прекращает операцию и возвращает ошибку с кодом ответа 429. Отклонение запросов часто вызвано:

  • Использованием истощительного пула потоков. Использование search или write пула потоков возвращает сообщение об ошибке TOO_MANY_REQUESTS.
  • Ошибкой разрыва цепи.
  • Высокой нагрузкой индексации, которая превышает indexing_pressure.memory.limit.

Если вы используете Elastic Cloud Hosted, вы можете использовать AutoOps для мониторинга своего кластера. AutoOps значительно упрощает управление кластером с помощью рекомендаций по производительности, отображения использования ресурсов, обнаружения проблем в режиме реального времени и путей решения. Дополнительную информацию см. на странице Мониторинг с помощью AutoOps.

Проверка отклоненных задач

Для проверки количества отклоненных задач для каждого пула потоков используйте API cat thread pool. Высокое соотношение rejected к completed задачам, особенно в пулах потоков search и write, означает, что Elasticsearch регулярно отклоняет запросы.

resp = client.cat.thread_pool(
    v=True,
    h="id,name,queue,active,rejected,completed",
)
print(resp)
const response = await client.cat.threadPool({
  v: "true",
  h: "id,name,queue,active,rejected,completed",
});
console.log(response);
GET /_cat/thread_pool?v=true&h=id,name,queue,active,rejected,completed

write отказ пула потоков часто отображается в API с ошибками и в соответствующем журнале как EsRejectedExecutionException с QueueResizingEsThreadPoolExecutor или queue capacity.

Эти ошибки часто связаны с очередью задач с задержкой.

См. это видео для пошагового руководства по устранению неполадок с отказом пула потоков.

Проверка разрыва цепи

Чтобы проверить количество срабатываний разрывов цепи, используйте API статистики узлов.

resp = client.nodes.stats(
    metric="breaker",
)
print(resp)
const response = await client.nodes.stats({
  metric: "breaker",
});
console.log(response);
GET /_nodes/stats/breaker

Эти статистические данные накапливаются с момента запуска узла. Дополнительную информацию см. в разделе ошибки разрыва цепи.

См. это видео для пошагового руководства по диагностике ошибок разрыва цепи.

Проверка нагрузки индексации

Чтобы проверить количество отклонений нагрузки индексации, используйте API статистики узлов.

resp = client.nodes.stats(
    human=True,
    filter_path="nodes.*.indexing_pressure",
)
print(resp)
const response = await client.nodes.stats({
  human: "true",
  filter_path: "nodes.*.indexing_pressure",
});
console.log(response);
GET _nodes/stats?human&filter_path=nodes.*.indexing_pressure

Эти данные накапливаются с момента запуска узла.

Отклонения нагрузки индексации отображаются как EsRejectedExecutionException и указывают на то, что они были отклонены из-за combined_coordinating_and_primary, coordinating, primary или replica.

Эти ошибки часто связаны с очередью задач с задержкой, размером bulk index или refresh_interval параметром целевого компонента ingest.

См. это видео для пошагового руководства по диагностике отклонений нагрузки индексации.

Предотвращение отклонения запросов

Устранение высокой загрузки процессора и памяти

Если Elasticsearch регулярно отклоняет запросы и другие задачи, в вашем кластере, вероятно, высокая загрузка процессора или давление на память JVM. Советы см. в разделах Высокая загрузка процессора и Высокое давление на память JVM.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/rejected-requests.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API