Τι είναι η δοκιμή αποθήκευσης; Τύποι, Concepts & Παράδειγμα

⚡ Έξυπνη Σύνοψη

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

  • 💾 Επίσης λέγεται: Δοκιμή απόδοσης αποθήκευσης, επειδή η ταχύτητα έχει εξίσου μεγάλη σημασία με τη σωστή τοποθέτηση.
  • ⚠️ Γιατί έχει σημασία: Η αργή αποθήκευση παράγει αργούς χρόνους απόκρισης, ερωτήματα μεγάλης διάρκειας και χαμηλότερη διαθεσιμότητα εφαρμογών.
  • 🧩 Τρεις τύποι: Δοκιμές εφαρμογών, προσομοίωση εφαρμογών και συγκριτική αξιολόγηση, το καθένα με τις δικές του δραστηριότητες.
  • 📏 Βασικές μετρήσεις: Τα IOPS, η καθυστέρηση, η απόδοση και το βάθος ουράς, διαβάζονται πάντα μαζί και όχι μεμονωμένα.
  • 🧪 Πώς λειτουργεί: Ορίστε στόχους, διαστασιολογήστε το σύνολο δεδομένων, επιλέξτε ρεαλιστικά μείγματα ανάγνωσης/εγγραφής και, στη συνέχεια, αυξήστε το φόρτο εργασίας.
  • Εργαλεία: Οι συνθετικές γεννήτριες εισόδου/εξόδου παράγουν επαναλήψιμους αριθμούς που οι εντολές αντιγραφής αρχείων δεν μπορούν ποτέ.
  • 🚫 Κοινά λάθη: Παρακολούθηση λάθος διακομιστή, παράλειψηping εκκαθάριση της προσωρινής μνήμης και αγνόηση της χρήσης του επεξεργαστή.

Εκπαιδευτικό σεμινάριο για δοκιμές αποθήκευσης που καλύπτει τύπους, έννοιες και συνηθισμένα λάθη

Τι είναι η δοκιμή αποθήκευσης;

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

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

Γιατί Δοκιμή αποθήκευσης;

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

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

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

Επισκόπηση δοκιμών αποθήκευσης που δείχνει μια εφαρμογή που εγγράφει δεδομένα μέσω του συστήματος αρχείων στη συσκευή αποθήκευσης

Τύποι δοκιμών αποθήκευσης

Χρησιμοποιούνται τρεις προσεγγίσεις, οι οποίες διαφέρουν κυρίως ως προς το πόσο στενά μοιάζει το φόρτο εργασίας με την πραγματική εφαρμογή.

  • Δοκιμή εφαρμογής: Δοκιμή εφαρμογών με δείγματα ερωτημάτων σε περιβάλλον παραγωγής.
  • Προσομοίωση Εφαρμογής: Διεξαγωγή των δοκιμών χρησιμοποιώντας τυπικό λογισμικό που συμπεριφέρεται παρόμοια με την εφαρμογή-στόχο.
  • Συγκριτική αξιολόγηση: Διεξαγωγή των δοκιμών χρησιμοποιώντας τυπικό λογισμικό συγκριτικής αξιολόγησης που δημιουργεί ένα συνθετικό, επαναλήψιμο φόρτο εργασίας.

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

Κοινές δοκιμές Concepts Συμμετοχή κατά τη διάρκεια των δοκιμών αποθήκευσης

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

Τύποι δοκιμών αποθήκευσης Παράδειγμα κοινών δραστηριοτήτων δοκιμής αποθήκευσης
Δοκιμή Εφαρμογών Συγκρίνετε τους χρόνους απόκρισης OLTP
Συγκρίνετε τους χρόνους λειτουργίας παρτίδας
Συγκρίνετε σταθερά ποσοστά ροής
Προσομοίωση εφαρμογής Δοκιμή μέγιστης αποθήκευσης IOPS για βάσεις δεδομένων
Δοκιμή μέγιστης απόδοσης αποθήκευσης για περιβάλλοντα ροής δεδομένων
Δοκιμή καθυστέρησης αποθήκευσης για ανταλλαγή μηνυμάτων ή άλλες εφαρμογές μονού νήματος
Βαθμολόγηση επιδόσεων Έλεγχος για καταστροφή δεδομένων

Βασικές μετρήσεις στις δοκιμές αποθήκευσης

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

Μετρικός Τι μετρά Όπου έχει τη μεγαλύτερη σημασία
IOPS Οι λειτουργίες ανάγνωσης και εγγραφής ολοκληρώνονται ανά δευτερόλεπτο, ανεξάρτητα από το μέγεθος Συναλλακτικές βάσεις δεδομένων και μικρές τυχαίες εγγραφές
Αφάνεια Χρόνος μεταξύ της έναρξης και της ολοκλήρωσης μιας μεμονωμένης λειτουργίας εισόδου/εξόδου Μηνύματα και διαδρομές εφαρμογών με ένα μόνο νήμα
Διακίνηση Όγκος δεδομένων που μετακινούνται ανά δευτερόλεπτο, συνήθως σε MB/s Μαζικές εκτελέσεις, αντίγραφα ασφαλείας και φόρτοι εργασίας ροής
Βάθος ουράς Αριθμός εκκρεμών αιτημάτων που εκδόθηκαν ταυτόχρονα Οποιαδήποτε εκτέλεση που πρέπει να αντικατοπτρίζει πραγματική ταυτόχρονη λειτουργία

Το βάθος της ουράς απαιτεί ιδιαίτερη προσοχή. Η έκδοση ενός αιτήματος κάθε φορά παράγει μια ακριβή καθυστέρηση ενός αιτήματος, αλλά ένα τεχνητά χαμηλό ποσοστό IOPS και απόδοσης, γι' αυτό και μια συσκευή μπορεί να φαίνεται αργή σε μια δοκιμή και γρήγορη στην παραγωγή ή το αντίστροφο.

Πώς να εκτελέσετε δοκιμές αποθήκευσης

Μια δοκιμή αποθήκευσης είναι αξιόπιστη μόνο όσο οι συνθήκες υπό τις οποίες εκτελέστηκε. Η παρακάτω ακολουθία διατηρεί τα αποτελέσματα επαναλήψιμα.

  • Βήμα 1) Ορίστε τον στόχο. Αποφασίστε εάν η εκτέλεση αποδεικνύει την ετοιμότητα της βάσης δεδομένων, βρίσκει ένα όριο απόδοσης ή συγκρίνει δύο συσκευές. Κάθε στόχος συνεπάγεται διαφορετικό φόρτο εργασίας και η ανάμειξή τους παράγει αριθμούς με βάση τους οποίους κανείς δεν μπορεί να ενεργήσει.
  • Βήμα 2) Προσδιορίστε το μέγεθος του συνόλου δεδομένων ρεαλιστικά. Ένα σύνολο εργασίας αρκετά μικρό ώστε να χωράει στην προσωρινή μνήμη μετρά την προσωρινή μνήμη, όχι τον χώρο αποθήκευσης. Αντιστοιχίστε τον όγκο δεδομένων παραγωγής ή τουλάχιστον υπερβείτε το μέγεθος της προσωρινής μνήμης κατά μεγάλο περιθώριο.
  • Βήμα 3) Επιλέξτε το μείγμα ανάγνωσης/εγγραφής και το μοτίβο. Η τυχαία και η διαδοχική πρόσβαση συμπεριφέρονται πολύ διαφορετικά στην ίδια συσκευή, όπως και οι μίξεις ανάγνωσης-εγγραφής 70/30 και οι ριπές μόνο εγγραφής. Πάρτε τη μίξη από την παρακολούθηση παραγωγής και όχι από μια προεπιλογή.
  • Βήμα 4) Ορίστε το βάθος της ουράς και τον αριθμό των νημάτων. Αυτά ελέγχουν πόσος ταυτόχρονος αριθμός φτάνει στη συσκευή, επομένως καταγράφονται με κάθε αποτέλεσμα — ένα ποσό που αναφέρεται χωρίς αυτά δεν μπορεί να αναπαραχθεί.
  • Βήμα 5) Εκκαθαρίστε τις προσωρινές μνήμες και κάντε προθέρμανση. Αποβάλετε τις προσωρινές μνήμες διακομιστή και συσκευής μεταξύ των εκτελέσεων και, στη συνέχεια, απορρίψτε το πρώτο διάστημα, ώστε να συγκρίνονται οι αριθμοί σταθερής κατάστασης και όχι οι αριθμοί πρώτης επαφής.
  • Βήμα 6) Τρέξτε για αρκετή ώρα. Οι σύντομες εκτελέσεις αποκρύπτουν το κενό μεταξύ εγγραφής και γραφικών που εμφανίζεται μόλις ένας SSD εξαντλήσει το buffer εγγραφής του. Οι παρατεταμένες εκτελέσεις το εκθέτουν.
  • Βήμα 7) Παρακολουθήστε ολόκληρη τη στοίβα. Καταγράψτε τη χρήση του επεξεργαστή, τη μνήμη και το δίκτυο παράλληλα με τους μετρητές αποθήκευσης, έτσι ώστε ένα σημείο συμφόρησης αλλού να μην ερμηνεύεται εσφαλμένα ως όριο αποθήκευσης.
  • Βήμα 8) Επαναλάβετε και συγκρίνετε. Εκτελέστε την ίδια διαμόρφωση περισσότερες από μία φορές και διατηρήστε τα αρχεία καταγραφής. Η απόκλιση απόδοσης μεταξύ των εκδόσεων είναι ορατή μόνο σε σχέση με μια αποθηκευμένη γραμμή βάσης.

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

Εργαλεία δοκιμής αποθήκευσης

Τα εργαλεία χωρίζονται σε δύο ομάδες και οι περισσότερες ομάδες χρειάζονται και τις δύο.

  • Συνθετικές γεννήτριες εισόδου/εξόδου. Βοηθητικά προγράμματα όπως fio, Iometer και sysbench εκδίδουν ένα επακριβώς περιγραφόμενο φόρτο εργασίας — δηλώνονται όλα το μέγεθος μπλοκ, το μείγμα ανάγνωσης/εγγραφής, το βάθος και η διάρκεια της ουράς, επομένως μια εκτέλεση μπορεί να επαναληφθεί ακριβώς σε μια άλλη συσκευή.
  • Εργαλεία φόρτωσης σε επίπεδο εφαρμογής. Οδηγοί όπως JMeter ασκήστε την ίδια την εφαρμογή, έτσι ώστε ο χώρος αποθήκευσης να βλέπει το ίδιο μοτίβο πρόσβασης που δημιουργούν οι πραγματικοί χρήστες, συμπεριλαμβανομένων των σχεδίων ερωτημάτων και της συμπεριφοράς ευρετηρίου που ένα συνθετικό εργαλείο δεν μπορεί να αναπαράγει.

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

Λάθη κατά την εκτέλεση δοκιμών αποθήκευσης

Τα περισσότερα μη έγκυρα αποτελέσματα αποθήκευσης tracεπιστρέφουμε σε έναν μικρό αριθμό λαθών που μπορούν να αποφευχθούν.

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

Συχνές Ερωτήσεις

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

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

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

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

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

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

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

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

Συνοψίστε αυτήν την ανάρτηση με: