Το VPN πέφτει σε μεγάλα ανεβάσματα: διαβάστε πρώτα την ουρά
Μια κορεσμένη ουρά ανόδου καθυστερεί την κίνηση ελέγχου όσο και τις εφαρμογές. Συγκρίνετε τη συμπεριφορά σε αδράνεια και υπό φόρτο, μετά αλλάξτε ένα πράγμα και επαναλάβετε τη δοκιμή.
Η σήραγγα είναι σταθερή όλη μέρα και πέφτει όποτε ξεκινά ένα μεγάλο ανέβασμα. Τα διαδραστικά αιτήματα κολλάνε πρώτα, ο πελάτης αναφέρει λήξη χρόνου και η σύνδεση επανέρχεται όταν τελειώσει η μεταφορά. Αυτό το μοτίβο δείχνει ουρά και επεξεργασία και όχι αποτυχία του απομακρυσμένου διακομιστή, γιατί στον διακομιστή δεν δόθηκε ποτέ η ευκαιρία να απαντήσει εγκαίρως. Η δουλειά είναι να το αναπαράγετε υπό ελεγχόμενο φόρτο και να διαβάσετε τους σωστούς μετρητές.
Αλλάξτε μία μεταβλητή ανά εκτέλεση και κρατήστε το τελικό σημείο σταθερό.
Χτίστε μια επαναλήψιμη σύγκριση φόρτου
Καταγράψτε μια βάση με τον σύνδεσμο σε αδράνεια: χρόνο μετάβασης και επιστροφής, λίγα αιτήματα εφαρμογών και το δικό του ημερολόγιο συμβάντων της σήραγγας. Μετά ξεκινήστε ανέβασμα γνωστού μεγέθους και επαναλάβετε ακριβώς αυτές τις μετρήσεις όσο διαρκεί. Κρατήστε το τελικό σημείο, τον πελάτη και τον προορισμό δοκιμής αμετάβλητα, γιατί η αλλαγή δύο από αυτά μαζί δεν σας λέει τίποτα.
Προσέξτε ποιο συμβάν εμφανίζεται πρώτο. Ο αυξανόμενος χρόνος μετάβασης και επιστροφής πριν από οποιοδήποτε σφάλμα υποδηλώνει ουρά· η σκληρή λήξη χρόνου με σταθερή καθυστέρηση υποδηλώνει κάτι άλλο, όπως ανανέωση κλειδιών ή ενέργεια στον λογαριασμό. Τα δύο μοτίβα οδηγούν σε διαφορετικά επόμενα βήματα. Γράψτε την παρατήρηση πριν αλλάξετε οτιδήποτε.
Αποθηκεύστε την έξοδο με χρονικές σφραγίδες ώστε οι εκτελέσεις υπό φόρτο και σε αδράνεια να συγκρίνονται γραμμή προς γραμμή.
Διαβάστε την ουρά, όχι την ταχύτητα
Οι συνδέσεις καταναλωτών αποθηκεύουν πακέτα στον εξοπλισμό του παρόχου και μια γεμάτη ουρά ανόδου καθυστερεί τα πάντα, μαζί και τα μικρά πακέτα ελέγχου που κρατούν τη σήραγγα ζωντανή. Ένα τεστ ταχύτητας που δείχνει υψηλό νούμερο λέει λίγα για αυτή την καθυστέρηση, γι' αυτό ένα τεστ σε αδράνεια περνά ενώ ένας κορεσμένος σύνδεσμος αποτυγχάνει.
ping -c 20 -i 0.2 203.0.113.10 mtr -rwc 20 203.0.113.10 tc -s qdisc show dev eth0 ss -ti dst 203.0.113.10 nstat -az | grep -E 'Retrans|Timeout'
Συγκρίνετε τα νούμερα καθυστέρησης υπό φόρτο με εκείνα της αδράνειας. Άλμα από δεκάδες χιλιοστά του δευτερολέπτου σε εκατοντάδες, χωρίς απώλεια πακέτων, είναι ουρά· η απώλεια με σταθερή καθυστέρηση δείχνει άλλη βλάβη.
Ελέγξτε τη συσκευή και τη διαδρομή ελέγχου
Η κρυπτογράφηση και η προώθηση κοστίζουν χρόνο επεξεργαστή, και ένας μικρός δρομολογητής ή ένα φορητό με θερμικό περιορισμό μπορεί να ρίχνει πακέτα όσο είναι απασχολημένο. Παρατηρήστε τον συνολικό φόρτο και όχι το ποσοστό μιας διεργασίας, γιατί η προώθηση στον πυρήνα και η διαχείριση διακοπών δεν εμφανίζονται εκεί που κοιτάζουν συνήθως οι άνθρωποι.
uptime mpstat -P ALL 1 3 dmesg | grep -i -E 'thermal|throttl' journalctl -u openvpn-server@server --since '10 min ago' | tail -20
Μια λήξη χρόνου στον πελάτη μπορεί επίσης να συμπέσει με προγραμματισμένη ανανέωση κλειδιών ή με συμβάν πολιτικής συνεδρίας. Διαβάστε το δικό του ημερολόγιο του πελάτη για τη σειρά των συμβάντων, όχι μόνο το μήνυμα σφάλματος της εφαρμογής.
Αλλάξτε ένα πράγμα και επαναλάβετε
Όπου η πλατφόρμα το υποστηρίζει, περιορίστε τον ρυθμό ανεβάσματος ή ταξινομήστε την ογκώδη κίνηση κάτω από τη διαδραστική κίνηση ώστε η ουρά να μη γεμίζει ποτέ. Μετά επαναλάβετε το ίδιο φορτίο εργασίας και συγκρίνετε τα ίδια τρία νούμερα όπως πριν. Μια αλλαγή που βελτιώνει ένα τεστ ταχύτητας αλλά αφήνει τη λήξη χρόνου στη θέση της δεν διόρθωσε τίποτα.
Το ανέβασμα των ορίων χρόνου σε όλο το φάσμα και η αποδυνάμωση της κρυπτογράφησης είναι οι δύο αλλαγές που κάνουν το σύμπτωμα να εξαφανιστεί χωρίς να εντοπίσουν ποιο όριο απέτυχε. Καμία από τις δύο δεν είναι επισκευή. Και οι δύο μετακινούν την αποτυχία αργότερα, όπου είναι δυσκολότερο να αποδοθεί.
Ολοκληρώστε δοκιμάζοντας ένα νέο αίτημα και τη συμπεριφορά επανασύνδεσης στην οποία βασίζεται πραγματικά ο χρήστης. Η σταθερότητα υπό τον φόρτο που προκάλεσε το παράπονο είναι το μόνο αποτέλεσμα που αξίζει να καταγραφεί.