Izboljšana odpornost s povratnim pritiskom in nadzorom sprejema za Amazon OpenSearch Service | Spletne storitve Amazon

Izboljšana odpornost s povratnim pritiskom in nadzorom sprejema za Amazon OpenSearch Service | Spletne storitve Amazon

Izvorno vozlišče: 2723961

Storitev Amazon OpenSearch je upravljana storitev, ki omogoča preprosto zaščito, uvajanje in upravljanje gruče OpenSearch v velikem obsegu v oblaku AWS. Lansko leto smo predstavili Protitlak pri indeksiranju drobcev in sprejemna kontrola, ki nadzoruje vire gruče in dohodni promet, da selektivno zavrne zahteve, ki bi sicer predstavljale tveganje za stabilnost, na primer pomanjkanje pomnilnika, in vplivale na zmogljivost gruče zaradi sporov v pomnilniku, nasičenosti procesorja in stroškov GC ter drugega.

Zdaj smo navdušeni, da lahko predstavimo povratni pritisk pri iskanju in nadzor sprejema na podlagi procesorja za storitev OpenSearch, ki dodatno povečuje odpornost gruč. Te izboljšave so na voljo za vse različice OpenSearch 1.3 ali novejše.

Iskanje Protitlak

Protitlak preprečuje, da bi bil sistem preobremenjen z delom. To počne tako, da nadzira hitrost prometa ali z odpuščanjem prekomerne obremenitve, da prepreči zrušitve in izgubo podatkov, izboljša zmogljivost in prepreči popolno odpoved sistema.

Povratni pritisk pri iskanju je mehanizem za prepoznavanje in preklic iskalnih zahtev med letom, ki zahtevajo veliko virov, ko je vozlišče pod pritiskom. Učinkovit je proti delovnim obremenitvam iskanja z nenormalno visoko porabo virov (kot so zapletene poizvedbe, počasne poizvedbe, veliko zadetkov ali težka združevanja), ki bi sicer lahko povzročile zrušitve vozlišča in vplivale na zdravje gruče.

Search Backpressure je zgrajen na vrhu ogrodja za sledenje virom opravil, ki zagotavlja API, enostaven za uporabo, za spremljanje uporabe virov posameznega opravila. Search Backpressure uporablja nit v ozadju, ki občasno meri porabo virov vozlišča in dodeli oceno preklica vsaki iskalni nalogi med letom na podlagi dejavnikov, kot so čas procesorja, dodelitve kopice in pretečeni čas. Višja ocena preklica ustreza iskalni zahtevi, ki zahteva več virov. Iskalne zahteve so preklicane v padajočem vrstnem redu glede na rezultat preklica, da se vozlišča hitro obnovijo, vendar je število preklic omejeno s hitrostjo, da se izognete potratnemu delu.

Naslednji diagram prikazuje potek dela Search Backpressure.

Iskalne zahteve po preklicu vrnejo statusno kodo HTTP 429 »Preveč zahtev«. OpenSearch vrne delne rezultate, če samo nekateri drobci ne uspejo in so dovoljeni delni rezultati. Oglejte si naslednjo kodo:

{ "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
}

Spremljanje povratnega pritiska pri iskanju

Podrobno stanje povratnega pritiska pri iskanju lahko spremljate z API-jem za statistiko vozlišča:

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

Ogledate si lahko tudi povzetek odpovedi za celotno gručo z uporabo amazoncloudwatch. Naslednje meritve so zdaj na voljo v ES/OpenSearchService imenski prostor:

  • SearchTaskCancelled – Število odpovedi vozlišča koordinatorja
  • SearchHardTaskCancelled – Število odpovedi podatkovnega vozlišča

Naslednji posnetek zaslona prikazuje primer sledenja tem meritvam na konzoli CloudWatch.

Nadzor sprejema na podlagi procesorja

Nadzor vstopa je mehanizem za nadzorovanje vrat, ki proaktivno omejuje število zahtev za vozlišče glede na njegovo trenutno zmogljivost, tako za organska povečanja kot za skoke v prometu.

Poleg pomnilniškega pritiska JVM in pragov velikosti zahtev zdaj spremlja tudi drsečo povprečno porabo procesorja vsakega vozlišča, da zavrne dohodne _search in _bulk zahteve. Preprečuje, da bi bila vozlišča preobremenjena s preveč zahtevami, kar vodi do vročih točk, težav z zmogljivostjo, časovnih omejitev zahtev in drugih kaskadnih napak. Prekomerne zahteve po zavrnitvi vrnejo statusno kodo HTTP 429 »Preveč zahtev«.

Obravnava napak HTTP 429

Prejeli boste napake HTTP 429, če vozlišču pošljete preveč prometa. Označuje bodisi nezadostne vire gruče, iskalne zahteve, ki zahtevajo veliko virov, bodisi nenamerno povečanje delovne obremenitve.

Povratni pritisk pri iskanju zagotavlja razlog za zavrnitev, kar lahko pomaga pri natančnejši nastavitvi iskalnih zahtev, ki zahtevajo veliko virov. Pri prometnih skokih priporočamo ponovne poskuse na strani odjemalca z eksponentnim odmikom in tresenjem.

Sledite lahko tudi tem vodnikom za odpravljanje težav, da odpravite napake zaradi pretiranih zavrnitev:

zaključek

Povratni pritisk pri iskanju je reaktivni mehanizem za odpravo prekomerne obremenitve, medtem ko je nadzor sprejema proaktiven mehanizem za omejevanje števila zahtev do vozlišča, ki presega njegovo zmogljivost. Oba delata v tandemu za izboljšanje splošne odpornosti gruče OpenSearch.

Search Backpressure je na voljo v Opensearch, in vedno iščemo zunanji prispevki. Lahko se sklicujete na RFC da bi začeli.


O avtorjih

Ketan Verma je višji SDE, ki dela na storitvi Amazon OpenSearch. Navdušen je nad gradnjo obsežnih porazdeljenih sistemov, izboljšanjem zmogljivosti in poenostavljanjem kompleksnih idej s preprostimi abstrakcijami. Zunaj službe rad bere in izpopolnjuje svoje veščine domačega barista.

Suresh NS je višji SDE, ki dela na storitvi Amazon OpenSearch. Navdušen je za reševanje problemov v velikih porazdeljenih sistemih.

Pritkumar Ladani je SDE-2, ki deluje na storitvi Amazon OpenSearch. Rad prispeva k razvoju odprtokodne programske opreme in je navdušen nad porazdeljenimi sistemi. Je amaterski igralec badmintona in uživa v trekingu.

Bukhtawar Khan je glavni inženir, ki dela na Amazon OpenSearch Service. Zanima ga gradnja porazdeljenih in avtonomnih sistemov. Je vzdrževalec in aktiven sodelavec OpenSearch.

Časovni žig:

Več od Veliki podatki AWS