Τι είναι η δοκιμή αποθήκευσης; Τύποι, Concepts & Παράδειγμα
⚡ Έξυπνη Σύνοψη
Οι δοκιμές αποθήκευσης επαληθεύουν ότι μια εφαρμογή γράφει τα δεδομένα της στους σωστούς καταλόγους και διαθέτει αρκετό χώρο στο δίσκο για να αποφύγει απροσδόκητους τερματισμούς, ενώ παράλληλα μετρούν πόσο γρήγορα ανταποκρίνεται ο υποκείμενος χώρος αποθήκευσης υπό ρεαλιστικό φόρτο.
Τι είναι η δοκιμή αποθήκευσης;
Δοκιμή αποθήκευσης είναι ένας τύπος δοκιμής λογισμικού που χρησιμοποιείται για να επαληθεύσει εάν η εφαρμογή λογισμικού που υπόκειται σε δοκιμή αποθηκεύει τα σχετικά δεδομένα σε κατάλληλους καταλόγους και εάν διαθέτει αρκετό χώρο για να αποτρέψει απροσδόκητους τερματισμούς λόγω ανεπαρκούς χώρου στο δίσκο. Ονομάζεται επίσης δοκιμή απόδοσης αποθήκευσης.
Η τεχνική βρίσκεται στη μη λειτουργική πλευρά του κλάδου: όπως και άλλες μορφές μη λειτουργικές δοκιμές, δεν λέει τίποτα για το αν μια λειτουργία παράγει τη σωστή απάντηση και τα πάντα για το αν το σύστημα μπορεί να συνεχίσει να παράγει απαντήσεις καθώς αυξάνεται ο όγκος δεδομένων και η πίεση εισόδου/εξόδου.
Γιατί Δοκιμή αποθήκευσης;
Η αποθήκευση είναι το πιο αργό επίπεδο που αγγίζουν οι περισσότερες εφαρμογές, επομένως μια αδυναμία σε αυτό εμφανίζεται παντού. Τέσσερις λόγοι δικαιολογούν έναν ειδικό κύκλο δοκιμών.
- Η αργή αποθήκευση σημαίνει αργούς χρόνους απόκρισης, ερωτήματα μεγάλης διάρκειας και χαμηλότερη διαθεσιμότητα εφαρμογών.
- Η αργή αποθήκευση αποτελεί επιβάρυνση για τη συντήρηση της υποδομής του διακομιστή.
- Βοηθάει να βρείτε τα πρακτικά όρια αποθήκευσης του συστήματος πριν από την ανάπτυξη.
- Βοηθά στην κατανόηση του τρόπου με τον οποίο αντιδρά το σύστημα όταν αντικαθίσταται ή αναβαθμίζεται μια συσκευή υλικού.
Το παρακάτω διάγραμμα τοποθετεί τις δοκιμές αποθήκευσης σε αυτό το πλαίσιο — η εφαρμογή, το σύστημα αρχείων και η φυσική συσκευή βρίσκονται όλα στην ίδια διαδρομή και μια καθυστέρηση οπουδήποτε σε αυτήν φτάνει στον χρήστη.
Τύποι δοκιμών αποθήκευσης
Χρησιμοποιούνται τρεις προσεγγίσεις, οι οποίες διαφέρουν κυρίως ως προς το πόσο στενά μοιάζει το φόρτο εργασίας με την πραγματική εφαρμογή.
- Δοκιμή εφαρμογής: Δοκιμή εφαρμογών με δείγματα ερωτημάτων σε περιβάλλον παραγωγής.
- Προσομοίωση Εφαρμογής: Διεξαγωγή των δοκιμών χρησιμοποιώντας τυπικό λογισμικό που συμπεριφέρεται παρόμοια με την εφαρμογή-στόχο.
- Συγκριτική αξιολόγηση: Διεξαγωγή των δοκιμών χρησιμοποιώντας τυπικό λογισμικό συγκριτικής αξιολόγησης που δημιουργεί ένα συνθετικό, επαναλήψιμο φόρτο εργασίας.
Το πρώτο δίνει το πιο ρεαλιστικό αποτέλεσμα και το λιγότερο φορητό. Το τρίτο δίνει αριθμούς που μπορούν να συγκριθούν μεταξύ συσκευών και προμηθευτών, αλλά λέει λίγα για το πώς θα συμπεριφερθεί η ίδια η εφαρμογή.
Κοινές δοκιμές 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επιστρέφουμε σε έναν μικρό αριθμό λαθών που μπορούν να αποφευχθούν.
- Παρακολούθηση της λάθος απόδοσης του διακομιστή, έτσι ώστε οι αριθμοί να περιγράφουν ένα μηχάνημα που δεν βρίσκεται υπό δοκιμή.
- Σύγκριση συσκευών αποθήκευσης χωρίς πρώτα να διαγραφεί η προσωρινή μνήμη του διακομιστή, η οποία μετρά τη μνήμη αντί για τον δίσκο.
- Ξεχνώντας να παρακολουθείται η χρήση του επεξεργαστή κατά τη διάρκεια των δοκιμών, κάτι που κρύβει ένα σημείο συμφόρησης που σχετίζεται με τον επεξεργαστή πίσω από ένα σύμπτωμα σε σχήμα αποθήκευσης.
- Δοκιμή της απόδοσης του χώρου αποθήκευσης με εντολές αντιγραφής αρχείων, οι οποίες είναι μονού νήματος, με τη βοήθεια της προσωρινής μνήμης και δεν είναι επαναλήψιμες.

