Βελτιωμένη ανθεκτικότητα με αντίθλιψη και έλεγχο αποδοχής για την υπηρεσία Amazon OpenSearch | Υπηρεσίες Ιστού της Amazon

Βελτιωμένη ανθεκτικότητα με αντίθλιψη και έλεγχο αποδοχής για την υπηρεσία Amazon OpenSearch | Υπηρεσίες Ιστού της Amazon

Κόμβος πηγής: 2723961

Amazon OpenSearch Service είναι μια διαχειριζόμενη υπηρεσία που διευκολύνει την ασφάλεια, την ανάπτυξη και τη λειτουργία συμπλεγμάτων OpenSearch σε κλίμακα στο AWS Cloud. Πέρυσι, παρουσιάσαμε Υποπίεση ευρετηρίασης θραυσμάτων και έλεγχος εισδοχής, το οποίο παρακολουθεί τους πόρους του συμπλέγματος και την εισερχόμενη κίνηση για να απορρίψει επιλεκτικά αιτήματα που διαφορετικά θα δημιουργούσαν κινδύνους σταθερότητας, όπως η απώλεια μνήμης και η απόδοση του συμπλέγματος επιπτώσεων λόγω διαφωνιών μνήμης, κορεσμού CPU και επιβάρυνσης GC και πολλά άλλα.

Είμαστε πλέον ενθουσιασμένοι που παρουσιάζουμε τον έλεγχο αποδοχής Search Backpressure και CPU για την Υπηρεσία OpenSearch, που ενισχύει περαιτέρω την ανθεκτικότητα των clusters. Αυτές οι βελτιώσεις είναι διαθέσιμες για όλες τις εκδόσεις OpenSearch 1.3 ή νεότερες.

Αναζήτηση αντίθλιψης

Η αντίθλιψη εμποδίζει ένα σύστημα να κατακλυστεί από εργασία. Αυτό το κάνει ελέγχοντας τον ρυθμό κυκλοφορίας ή μειώνοντας υπερβολικό φορτίο προκειμένου να αποφευχθούν σφάλματα και απώλεια δεδομένων, να βελτιώσει την απόδοση και να αποφύγει την πλήρη αστοχία του συστήματος.

Το Search Backpressure είναι ένας μηχανισμός για τον εντοπισμό και την ακύρωση αιτημάτων αναζήτησης που απαιτούν ένταση πόρων κατά τη διάρκεια της πτήσης όταν ένας κόμβος βρίσκεται υπό πίεση. Είναι αποτελεσματικό έναντι φόρτου εργασίας αναζήτησης με ασυνήθιστα υψηλή χρήση πόρων (όπως σύνθετα ερωτήματα, αργά ερωτήματα, πολλές επισκέψεις ή βαριές συναθροίσεις), που διαφορετικά θα μπορούσαν να προκαλέσουν σφάλματα κόμβου και να επηρεάσουν την υγεία του συμπλέγματος.

Το Search Backpressure είναι χτισμένο πάνω από το πλαίσιο παρακολούθησης πόρων εργασιών, το οποίο παρέχει ένα εύχρηστο API για την παρακολούθηση της χρήσης πόρων κάθε εργασίας. Το Search Backpressure χρησιμοποιεί ένα νήμα φόντου που μετρά περιοδικά τη χρήση πόρων του κόμβου και εκχωρεί μια βαθμολογία ακύρωσης σε κάθε εργασία αναζήτησης κατά την πτήση με βάση παράγοντες όπως ο χρόνος CPU, οι εκχωρήσεις σωρού και ο χρόνος που έχει παρέλθει. Μια υψηλότερη βαθμολογία ακύρωσης αντιστοιχεί σε ένα αίτημα αναζήτησης με μεγαλύτερη ένταση πόρων. Τα αιτήματα αναζήτησης ακυρώνονται με φθίνουσα σειρά της βαθμολογίας ακύρωσής τους για να ανακτηθούν γρήγορα οι κόμβοι, αλλά ο αριθμός των ακυρώσεων είναι περιορισμένος σε ποσοστό για να αποφευχθεί η σπάταλη εργασία.

Το παρακάτω διάγραμμα απεικονίζει τη ροή εργασιών 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
}

Παρακολούθηση αντιπίεσης αναζήτησης

Μπορείτε να παρακολουθήσετε τη λεπτομερή κατάσταση Backpressure αναζήτησης χρησιμοποιώντας το Node stats API:

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

Μπορείτε επίσης να δείτε τη σύνοψη ακυρώσεων σε όλο το σύμπλεγμα χρησιμοποιώντας amazoncloudwatch. Οι ακόλουθες μετρήσεις είναι πλέον διαθέσιμες στο ES/OpenSearchService χώρος ονομάτων:

  • SearchTaskCancelled – Ο αριθμός των ακυρώσεων κόμβου συντονιστή
  • SearchShardTaskCancelled – Ο αριθμός των ακυρώσεων κόμβων δεδομένων

Το παρακάτω στιγμιότυπο οθόνης δείχνει ένα παράδειγμα παρακολούθησης αυτών των μετρήσεων στην κονσόλα CloudWatch.

Έλεγχος αποδοχής βάσει CPU

Ο έλεγχος εισδοχής είναι ένας μηχανισμός φύλαξης που περιορίζει προληπτικά τον αριθμό των αιτημάτων σε έναν κόμβο με βάση την τρέχουσα χωρητικότητά του, τόσο για οργανικές αυξήσεις όσο και για αιχμές στην κίνηση.

Εκτός από τα όρια πίεσης μνήμης JVM και μεγέθους αιτήματος, τώρα παρακολουθεί επίσης τον κυλιόμενο μέσο όρο χρήσης CPU κάθε κόμβου για να απορρίψει τα εισερχόμενα _search και _bulk αιτήσεων. Αποτρέπει την υπερφόρτωση των κόμβων με πάρα πολλά αιτήματα που οδηγούν σε hot spots, προβλήματα απόδοσης, χρονικά όρια αιτημάτων και άλλες διαδοχικές αποτυχίες. Υπερβολικά αιτήματα επιστρέφουν έναν κωδικό κατάστασης HTTP 429 “Too Many Requests” μετά την απόρριψη.

Χειρισμός σφαλμάτων HTTP 429

Θα λάβετε σφάλματα HTTP 429 εάν στείλετε υπερβολική κίνηση σε έναν κόμβο. Υποδεικνύει είτε ανεπαρκείς πόρους συμπλέγματος, αιτήματα αναζήτησης με ένταση πόρων ή ακούσια αύξηση του φόρτου εργασίας.

Το Search Backpressure παρέχει τον λόγο απόρριψης, κάτι που μπορεί να βοηθήσει στη βελτίωση των αιτημάτων αναζήτησης που απαιτούν πόρους. Για αυξήσεις επισκεψιμότητας, συνιστούμε επαναλήψεις από την πλευρά του πελάτη με εκθετική οπισθοδρόμηση και νευρικότητα.

Μπορείτε επίσης να ακολουθήσετε αυτούς τους οδηγούς αντιμετώπισης προβλημάτων για τον εντοπισμό σφαλμάτων υπερβολικών απορρίψεων:

Συμπέρασμα

Το Search Backpressure είναι ένας αντιδραστικός μηχανισμός για την απόρριψη υπερβολικού φορτίου, ενώ ο έλεγχος αποδοχής είναι ένας προληπτικός μηχανισμός για τον περιορισμό του αριθμού των αιτημάτων σε έναν κόμβο πέρα ​​από τη χωρητικότητά του. Και τα δύο λειτουργούν παράλληλα για να βελτιώσουν τη συνολική ανθεκτικότητα ενός συμπλέγματος OpenSearch.

Το Search Backpressure είναι διαθέσιμο στο Opensearch, και πάντα ψάχνουμε εξωτερικές συνεισφορές. Μπορείτε να ανατρέξετε στο RFC για να ξεκινήσετε.


Σχετικά με τους συγγραφείς

Κετάν Βέρμα είναι Ανώτερος SDE που εργάζεται στην Υπηρεσία OpenSearch της Amazon. Είναι παθιασμένος με την κατασκευή κατανεμημένων συστημάτων μεγάλης κλίμακας, τη βελτίωση της απόδοσης και την απλοποίηση σύνθετων ιδεών με απλές αφαιρέσεις. Εκτός δουλειάς, του αρέσει να διαβάζει και να βελτιώνει τις δεξιότητές του στον οικιακό barista.

Suresh NS είναι Ανώτερος SDE που εργάζεται στην Υπηρεσία OpenSearch της Amazon. Είναι παθιασμένος με την επίλυση προβλημάτων σε μεγάλης κλίμακας κατανεμημένα συστήματα.

Pritkumar Ladani είναι ένα SDE-2 που λειτουργεί στην υπηρεσία OpenSearch της Amazon. Του αρέσει να συνεισφέρει στην ανάπτυξη λογισμικού ανοιχτού κώδικα και είναι παθιασμένος με τα κατανεμημένα συστήματα. Είναι ερασιτέχνης παίκτης μπάντμιντον και του αρέσει η πεζοπορία.

Μπουχτάουαρ Χαν είναι Κύριος Μηχανικός που εργάζεται στην Υπηρεσία OpenSearch της Amazon. Ενδιαφέρεται για την κατασκευή κατανεμημένων και αυτόνομων συστημάτων. Είναι συντηρητής και ενεργός συνεργάτης του OpenSearch.

Σφραγίδα ώρας:

Περισσότερα από Μεγάλα δεδομένα AWS