Покращена стійкість із зворотним тиском і контролем доступу для Amazon OpenSearch Service | Веб-сервіси Amazon

Покращена стійкість із зворотним тиском і контролем доступу для Amazon OpenSearch Service | Веб-сервіси Amazon

Вихідний вузол: 2723961

Служба Amazon OpenSearch це керований сервіс, який спрощує захист, розгортання та керування кластерами OpenSearch у масштабі AWS Cloud. Минулого року ми представили Протитиск індексації фрагментів та пропускний контроль, який відстежує ресурси кластера та вхідний трафік, щоб вибірково відхиляти запити, які в іншому випадку створили б ризики для стабільності, як-от нестача пам’яті та вплинули на продуктивність кластера через суперечки щодо пам’яті, насичення процесора та витрати GC тощо.

Тепер ми раді представити Search Backpressure і контроль доступу на основі процесора для OpenSearch Service, який додатково підвищує стійкість кластерів. Ці вдосконалення доступні для всіх версій OpenSearch 1.3 або вище.

Пошук Протитиск

Протитиск запобігає перевантаженню системи роботою. Це робиться шляхом контролю швидкості трафіку або скидання надмірного навантаження, щоб запобігти збоям і втраті даних, підвищити продуктивність і уникнути повного збою системи.

Search Backpressure — це механізм ідентифікації та скасування ресурсомістких пошукових запитів під час польоту, коли вузол знаходиться під тиском. Він ефективний проти навантажень пошуку з аномально високим використанням ресурсів (таких як складні запити, повільні запити, багато звернень або важкі агрегації), які інакше можуть спричинити збої вузлів і вплинути на працездатність кластера.

Search Backpressure побудовано на основі системи відстеження ресурсів завдань, яка забезпечує простий у використанні API для моніторингу використання ресурсів кожним завданням. Search Backpressure використовує фоновий потік, який періодично вимірює використання ресурсів вузла та призначає оцінку скасування кожному завданню пошуку під час роботи на основі таких факторів, як час ЦП, розподіл купи та час, що минув. Вищий бал скасування відповідає більш ресурсомісткому пошуковому запиту. Запити на пошук скасовуються в порядку зменшення їх оцінки скасування, щоб швидко відновити вузли, але кількість скасувань обмежена частотою, щоб уникнути марної роботи.

Наступна діаграма ілюструє робочий процес Search Backpressure.

Після скасування пошукові запити повертають код статусу HTTP 429 «Забагато запитів». OpenSearch повертає часткові результати, якщо лише деякі шарди не вдаються, а часткові результати дозволені. Перегляньте наступний код:

{ "error": { "root_cause": [ { "type": "task_cancelled_exception", "reason": "cancelled task with reason: heap usage exceeded [403mb >= 77.6mb], elapsed time exceeded [1.7m >= 45s]" } ], "type": "search_phase_execution_exception", "reason": "SearchTask was cancelled", "phase": "fetch", "grouped": true, "failed_shards": [ { "shard": 0, "index": "nyc_taxis", "node": "9gB3PDp6Speu61KvOheDXA", "reason": { "type": "task_cancelled_exception", "reason": "cancelled task with reason: heap usage exceeded [403mb >= 77.6mb], elapsed time exceeded [1.7m >= 45s]" } } ], "caused_by": { "type": "task_cancelled_exception", "reason": "cancelled task with reason: heap usage exceeded [403mb >= 77.6mb], elapsed time exceeded [1.7m >= 45s]" } }, "status": 429
}

Моніторинг протитиску пошуку

Ви можете відстежувати детальний стан Search Backpressure за допомогою API статистики вузла:

curl -X GET "https://{endpoint}/_nodes/stats/search_backpressure"

Ви також можете переглянути загальнокластерний підсумок скасувань за допомогою Amazon CloudWatch. Наступні показники тепер доступні в ES/OpenSearchService простір імен:

  • SearchTaskCancelled – Кількість скасувань вузла координатора
  • SearchHardTaskCancelled – Кількість скасувань вузла даних

На наступному знімку екрана показано приклад відстеження цих показників на консолі CloudWatch.

Контроль допуску на основі ЦП

Контроль доступу — це механізм контролю доступу, який проактивно обмежує кількість запитів до вузла на основі його поточної потужності, як для органічного збільшення, так і для стрибків трафіку.

На додаток до обсягу пам’яті JVM і порогових значень розміру запиту, тепер він також відстежує ковзне середнє використання ЦП кожного вузла, щоб відхиляти вхідні _search та _bulk запити. Це запобігає перевантаженню вузлів занадто великою кількістю запитів, що призводить до гарячих точок, проблем з продуктивністю, тайм-аутів запитів та інших каскадних збоїв. Надмірна кількість запитів після відхилення повертає код статусу HTTP 429 «Забагато запитів».

Обробка помилок HTTP 429

Ви отримаєте повідомлення про помилку HTTP 429, якщо надсилатимете надмірний трафік до вузла. Це вказує на недостатню кількість ресурсів кластера, ресурсомісткі пошукові запити або ненавмисне підвищення робочого навантаження.

Search Backpressure визначає причину відхилення, що може допомогти точніше налаштувати ресурсомісткі пошукові запити. У разі стрибків трафіку ми рекомендуємо повторні спроби на стороні клієнта з експоненціальним затримкою та тремтінням.

Ви також можете скористатися цими посібниками з усунення несправностей, щоб усунути надмірні відхилення:

Висновок

Search Backpressure — це реактивний механізм для усунення надмірного навантаження, тоді як контроль доступу — це проактивний механізм для обмеження кількості запитів до вузла понад його пропускну здатність. Обидва працюють у тандемі, щоб покращити загальну стійкість кластера OpenSearch.

Пошук Backpressure доступний у OpenSearch, і ми завжди в пошуку зовнішні внески. Ви можете звернутися до RFC щоб розпочати роботу.


Про авторів

Кетан Верма є старшим SDE, який працює над Amazon OpenSearch Service. Він захоплений створенням великомасштабних розподілених систем, підвищенням продуктивності та спрощенням складних ідей за допомогою простих абстракцій. Поза роботою він любить читати та вдосконалювати навички домашнього бариста.

Суреш Н.С є старшим SDE, який працює над Amazon OpenSearch Service. Він захоплений вирішенням проблем у великих розподілених системах.

Пріткумар Ладані це SDE-2, що працює на Amazon OpenSearch Service. Він любить робити внесок у розробку програмного забезпечення з відкритим кодом і захоплюється розподіленими системами. Він любитель грати в бадмінтон і любить трекінг.

Бухтавар-хан є головним інженером, який працює над Amazon OpenSearch Service. Його цікавить побудова розподілених і автономних систем. Він супроводжує та активно бере участь у OpenSearch.

Часова мітка:

Більше від Великі дані AWS