Verbeterde veerkracht met tegendruk en toegangscontrole voor Amazon OpenSearch Service | Amazon-webservices

Verbeterde veerkracht met tegendruk en toegangscontrole voor Amazon OpenSearch Service | Amazon-webservices

Bronknooppunt: 2723961

Amazon OpenSearch-service is een beheerde service die het eenvoudig maakt om OpenSearch-clusters op schaal te beveiligen, te implementeren en te gebruiken in de AWS Cloud. Vorig jaar hebben we geïntroduceerd Shard Indexing Tegendruk en toelatingscontrole, dat clusterresources en inkomend verkeer bewaakt om selectief verzoeken af ​​te wijzen die anders stabiliteitsrisico's zouden opleveren, zoals onvoldoende geheugen en impact op de clusterprestaties als gevolg van geheugenconflicten, CPU-verzadiging en GC-overhead, en meer.

We zijn nu verheugd om Search Backpressure en CPU-gebaseerde toelatingscontrole voor OpenSearch Service te introduceren, wat de veerkracht van clusters verder verbetert. Deze verbeteringen zijn beschikbaar voor alle OpenSearch-versies 1.3 of hoger.

Zoek tegendruk

Tegendruk voorkomt dat een systeem overstelpt wordt met werk. Het doet dit door de verkeerssnelheid te beheersen of door overmatige belasting af te werpen om crashes en gegevensverlies te voorkomen, de prestaties te verbeteren en totale uitval van het systeem te voorkomen.

Zoektegendruk is een mechanisme om tijdens de vlucht resource-intensieve zoekverzoeken te identificeren en te annuleren wanneer een knooppunt onder dwang staat. Het is effectief tegen zoekworkloads met een abnormaal hoog resourcegebruik (zoals complexe query's, langzame query's, veel treffers of zware aggregaties), die anders node-crashes zouden kunnen veroorzaken en de gezondheid van het cluster zouden kunnen beïnvloeden.

Search Backpressure is gebouwd bovenop het framework voor het volgen van taakresources, dat een gebruiksvriendelijke API biedt om het resourcegebruik van elke taak te monitoren. Search Backpressure maakt gebruik van een achtergrondthread die periodiek het resourcegebruik van het knooppunt meet en een annuleringsscore toekent aan elke zoektaak tijdens de vlucht op basis van factoren zoals CPU-tijd, heaptoewijzingen en verstreken tijd. Een hogere annuleringsscore komt overeen met een meer resource-intensief zoekverzoek. Zoekopdrachten worden geannuleerd in aflopende volgorde van hun annuleringsscore om knooppunten snel te herstellen, maar het aantal annuleringen is beperkt om verspillend werk te voorkomen.

Het volgende diagram illustreert de Search Backpressure-workflow.

Zoekopdrachten retourneren bij annulering een HTTP 429-statuscode 'Te veel verzoeken'. OpenSearch retourneert gedeeltelijke resultaten als slechts enkele shards falen en gedeeltelijke resultaten zijn toegestaan. Zie de volgende code:

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

Monitoring zoektegendruk

U kunt de gedetailleerde Search Backpressure-status bewaken met behulp van de node stats API:

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

U kunt ook het clusterbrede overzicht van opzeggingen bekijken via Amazon Cloud Watch. De volgende statistieken zijn nu beschikbaar in de ES/OpenSearchService naamruimte:

  • ZoektaakGeannuleerd – Het aantal annuleringen van coördinatorknooppunten
  • SearchShardTask geannuleerd – Het aantal annuleringen van dataknooppunten

De volgende schermafbeelding toont een voorbeeld van het bijhouden van deze statistieken op de CloudWatch-console.

Op CPU gebaseerde toegangscontrole

Toegangscontrole is een poortwachtersmechanisme dat proactief het aantal verzoeken tot een knooppunt beperkt op basis van de huidige capaciteit, zowel voor organische toenames als voor pieken in het verkeer.

Naast de JVM-geheugendruk en drempels voor verzoekgrootte, bewaakt het nu ook het voortschrijdend gemiddelde CPU-gebruik van elk knooppunt om inkomende berichten te weigeren _search en _bulk aanvragen. Het voorkomt dat nodes worden overweldigd door te veel verzoeken, wat leidt tot hotspots, prestatieproblemen, time-outs voor verzoeken en andere trapsgewijze fouten. Overmatige verzoeken retourneren een HTTP 429-statuscode "Te veel verzoeken" bij afwijzing.

HTTP 429-fouten afhandelen

U ontvangt HTTP 429-fouten als u overmatig verkeer naar een knooppunt stuurt. Het duidt op onvoldoende clusterresources, resource-intensieve zoekverzoeken of een onbedoelde piek in de werklast.

Zoektegendruk geeft de reden voor afwijzing, wat kan helpen bij het verfijnen van resource-intensieve zoekverzoeken. Voor verkeerspieken raden we nieuwe pogingen aan de clientzijde aan met exponentiële backoff en jitter.

U kunt ook deze handleidingen voor probleemoplossing volgen om buitensporige afwijzingen te debuggen:

Conclusie

Zoektegendruk is een reactief mechanisme om buitensporige belasting af te werpen, terwijl toegangscontrole een proactief mechanisme is om het aantal verzoeken naar een knooppunt boven zijn capaciteit te beperken. Beide werken samen om de algehele veerkracht van een OpenSearch-cluster te verbeteren.

Zoeken Tegendruk is beschikbaar in OpenSearch, en we zijn altijd op zoek naar externe bijdragen. U kunt verwijzen naar de RFC om aan de slag te gaan.


Over de auteurs

Ketan Verma is een Senior SDE die werkt aan Amazon OpenSearch Service. Hij is gepassioneerd door het bouwen van grootschalige gedistribueerde systemen, het verbeteren van prestaties en het vereenvoudigen van complexe ideeën met eenvoudige abstracties. Buiten het werk om leest hij graag en verbetert hij zijn thuisbarista-vaardigheden.

Zeker NS is een Senior SDE die werkt aan Amazon OpenSearch Service. Hij heeft een passie voor het oplossen van problemen in grootschalige gedistribueerde systemen.

Pritkumar Ladani is een SDE-2 die werkt op Amazon OpenSearch Service. Hij draagt ​​graag bij aan de ontwikkeling van open source software en heeft een passie voor gedistribueerde systemen. Hij is een amateur-badmintonspeler en houdt van wandelen.

Bukhtawar Khan is een hoofdingenieur die werkt aan de Amazon OpenSearch-service. Hij is geïnteresseerd in het bouwen van gedistribueerde en autonome systemen. Hij is een onderhouder en levert een actieve bijdrage aan OpenSearch.

Tijdstempel:

Meer van AWS-bigdata