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

Γρήγορο αρχείο, αργό κλικ: δύο διαφορετικοί αριθμοί

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

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

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

Μετρήστε το παράπονο, όχι τη σύνδεση

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

ping -c 20 10.60.0.5
curl -sS -o /dev/null -w 'ttfb=%{time_starttransfer} rate=%{speed_download}\n' https://files.plant.example/1gb.bin
iperf3 -c 10.60.0.5 -t 10 -P 4

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

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

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

Η καθυστέρηση υπό φόρτο είναι πρόβλημα ουράς

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

ping -c 20 10.60.0.5 &
iperf3 -c 10.60.0.5 -t 20 -R -b 20M

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

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

Αλλάξτε ένα πράγμα και συγκρίνετε όμοιο με όμοιο

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

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

Μετά ταιριάξτε το εργαλείο με τον ισχυρισμό στο δελτίο. Το "αργό διαδίκτυο" δεν είναι μέτρηση· το "το πρώτο byte πήρε 900 ms προς αυτόν τον υπολογιστή ενώ η ρυθμαπόδοση ήταν καλή" είναι, και δείχνει απευθείας στην καθυστέρηση και όχι στη χωρητικότητα.

Σχετικά άρθρα