Forbedret elastisitet med mottrykk og adgangskontroll for Amazon OpenSearch Service | Amazon Web Services

Forbedret elastisitet med mottrykk og adgangskontroll for Amazon OpenSearch Service | Amazon Web Services

Kilde node: 2723961

Amazon OpenSearch-tjeneste er en administrert tjeneste som gjør det enkelt å sikre, distribuere og betjene OpenSearch-klynger i stor skala i AWS Cloud. I fjor introduserte vi Shard Indexing Mottrykk og opptakskontroll, som overvåker klyngeressurser og innkommende trafikk for selektivt å avvise forespørsler som ellers ville utgjøre stabilitetsrisiko som for lite minne og påvirke klyngeytelsen på grunn av minnekonflikter, CPU-metning og GC-overhead, og mer.

Vi er nå glade for å introdusere Search Backpressure og CPU-basert adgangskontroll for OpenSearch Service, som ytterligere forbedrer motstandskraften til klynger. Disse forbedringene er tilgjengelige for alle OpenSearch versjoner 1.3 eller nyere.

Søk mottrykk

Mottrykk forhindrer at et system blir overveldet av arbeid. Den gjør det ved å kontrollere trafikkhastigheten eller ved å fjerne overdreven belastning for å forhindre krasj og datatap, forbedre ytelsen og unngå total svikt i systemet.

Søkemottrykk er en mekanisme for å identifisere og kansellere ressurskrevende søkeforespørsler under flyet når en node er under tvang. Den er effektiv mot søkearbeidsbelastninger med unormalt høy ressursbruk (som komplekse søk, trege søk, mange treff eller tunge aggregeringer), som ellers kan forårsake nodekrasj og påvirke klyngens helse.

Search Backpressure er bygget på toppen av oppgaveressurssporingsrammeverket, som gir et brukervennlig API for å overvåke hver oppgaves ressursbruk. Search Backpressure bruker en bakgrunnstråd som med jevne mellomrom måler nodens ressursbruk og tildeler en kanselleringsscore til hver søkeoppgave under fly basert på faktorer som CPU-tid, heap-allokeringer og medgått tid. En høyere kanselleringsscore tilsvarer en mer ressurskrevende søkeforespørsel. Søkeforespørsler kanselleres i synkende rekkefølge etter kanselleringspoengsummen for å gjenopprette noder raskt, men antallet kanselleringer er hastighetsbegrenset for å unngå sløsing med arbeid.

Følgende diagram illustrerer arbeidsflyten for søkemottrykk.

Søkeforespørsler returnerer en HTTP 429 "Too Many Requests"-statuskode ved kansellering. OpenSearch returnerer delvise resultater hvis bare noen shards mislykkes og delvise resultater tillates. Se følgende kode:

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

Overvåking av søkemottrykk

Du kan overvåke den detaljerte søkemottrykkstilstanden ved å bruke nodestatistikk-API:

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

Du kan også se det klyngeomfattende sammendraget av kanselleringer ved å bruke Amazon CloudWatch. Følgende beregninger er nå tilgjengelige i ES/OpenSearchService navneområde:

  • SearchTaskCancelled – Antall kanselleringer av koordinatornode
  • SearchShardTaskCancelled – Antall kanselleringer av datanode

Følgende skjermbilde viser et eksempel på sporing av disse beregningene på CloudWatch-konsollen.

CPU-basert adgangskontroll

Adgangskontroll er en gatekeeper-mekanisme som proaktivt begrenser antall forespørsler til en node basert på dens nåværende kapasitet, både for organiske økninger og topper i trafikken.

I tillegg til JVM-minnetrykket og terskler for forespørselsstørrelse, overvåker den nå også hver nodes løpende gjennomsnittlige CPU-bruk for å avvise innkommende _search og _bulk forespørsler. Det forhindrer at noder blir overveldet med for mange forespørsler som fører til hot spots, ytelsesproblemer, tidsavbrudd for forespørsler og andre gjennomgripende feil. Overdrevne forespørsler returnerer en HTTP 429 "Too Many Requests"-statuskode ved avvisning.

Håndtering av HTTP 429-feil

Du vil motta HTTP 429-feil hvis du sender for mye trafikk til en node. Det indikerer enten utilstrekkelige klyngeressurser, ressurskrevende søkeforespørsler eller en utilsiktet økning i arbeidsmengden.

Søkemottrykk gir årsaken til avvisningen, noe som kan hjelpe med å finjustere ressurskrevende søkeforespørsler. For trafikkøkninger anbefaler vi gjenforsøk på klientsiden med eksponentiell backoff og jitter.

Du kan også følge disse feilsøkingsveiledningene for å feilsøke overdreven avvisninger:

konklusjonen

Søkemottrykk er en reaktiv mekanisme for å fjerne overdreven belastning, mens adgangskontroll er en proaktiv mekanisme for å begrense antall forespørsler til en node utover dens kapasitet. Begge jobber sammen for å forbedre den generelle robustheten til en OpenSearch-klynge.

Søkemottrykk er tilgjengelig i OpenSearch, og vi leter alltid etter eksterne bidrag. Du kan referere til RFC å komme i gang.


Om forfatterne

Ketan Verma er en senior SDE som jobber med Amazon OpenSearch Service. Han brenner for å bygge distribuerte systemer i stor skala, forbedre ytelsen og forenkle komplekse ideer med enkle abstraksjoner. Utenfor jobben liker han å lese og forbedre sine ferdigheter som hjemmebarista.

Suresh NS er en senior SDE som jobber med Amazon OpenSearch Service. Han brenner for å løse problemer i store distribuerte systemer.

Pritkumar Ladani er en SDE-2 som fungerer på Amazon OpenSearch Service. Han liker å bidra til utvikling av åpen kildekode, og brenner for distribuerte systemer. Han er en amatørbadmintonspiller og liker å gå på fotturer.

Bukhtawar Khan er en hovedingeniør som jobber med Amazon OpenSearch Service. Han er interessert i å bygge distribuerte og autonome systemer. Han er en vedlikeholder og en aktiv bidragsyter til OpenSearch.

Tidstempel:

Mer fra AWS Big Data