Το φορτίο του διακομιστή VPN εξηγείται: χρήστες, CPU ή ανερχόμενη ζεύξη;
Ένα χαμηλό σκορ φορτίου μπορεί να σημαίνει αδρανείς χρήστες, ελεύθερη CPU ή ευρεία ανερχόμενη ζεύξη. Διαβάστε το loadavg, τους μετρητές διεπαφής και το αρχείο κατάστασης πριν το πείτε γρήγορο.
Μια πύλη με φορτίο 0.4 μπορεί ακόμη να σέρνεται για κάθε χρήστη πίσω της. Το μέσο φορτίο μετρά εργασίες που μπορούν να εκτελεστούν ή που έχουν κολλήσει σε αδιάκοπη αναμονή, και σε έναν κεντρικό υπολογιστή τεσσάρων πυρήνων μια μόνο κορεσμένη διεργασία αρκεί για να το σπρώξει προς το 1.0 ενώ τρεις πυρήνες κάθονται άεργοι. Το να διαβάζει κανείς αυτόν τον αριθμό ως εφεδρική ισχύ είναι το πιο συνηθισμένο λάθος στην επιλογή τελικού σημείου. Αυτό που πραγματικά περιορίζει ένα τούνελ είναι συνήθως ένα από τέσσερα πράγματα: ένας απασχολημένος πυρήνας, η ανερχόμενη ζεύξη, η ουρά μπροστά της ή μια πολιτική ανά συνεδρία που κανείς δεν τεκμηρίωσε.
Το μέσο φορτίο μετρά εργασίες, όχι ρυθμαπόδοση
Ο πυρήνας δειγματοληπτεί την ουρά εκτέλεσης και το πλήθος των εργασιών που περιμένουν είσοδο και έξοδο, και στη συνέχεια εξομαλύνει και τα δύο σε ένα, πέντε και δεκαπέντε λεπτά. Τίποτα σε αυτόν τον ορισμό δεν αναφέρει byte, πακέτα ή τούνελ. Ένας κεντρικός υπολογιστής με κολλημένο αποθηκευτικό χώρο μπορεί να αναφέρει υψηλό φορτίο σχεδόν χωρίς κίνηση, και ένας που σπρώχνει ένα gigabit μέσα από διαδρομή δεδομένων του πυρήνα μπορεί να αναφέρει ένα άνετο.
Επομένως η συσχέτιση του φορτίου με την απόδοση του τούνελ απαιτεί εικόνα ανά πυρήνα. Αν ένας πυρήνας είναι καρφωμένος, το συνολικό ποσοστό σε ένα ταμπλό θα φαίνεται ακόμη καλό:
cat /proc/loadavg
mpstat -P ALL 1 1
top -H -b -n 1 | head -n 20
Η τρίτη εντολή είναι αυτή που μετράει περισσότερο σε κεντρικούς υπολογιστές VPN. Η επεξεργασία πακέτων στον χώρο χρήστη στο OpenVPN 2.x είναι σε μεγάλο βαθμό σειριακή ανά διεργασία, οπότε ένα μόνο απασχολημένο νήμα μπορεί να γίνει το ταβάνι ενώ το ταμπλό αναφέρει άφθονη άεργη χωρητικότητα. Αν ένα νήμα κρατά το μεγαλύτερο μέρος ενός πυρήνα κατά τη διάρκεια της αργής περιόδου σας, ο κεντρικός υπολογιστής δεν είναι υποδιαστασιολογημένος συνολικά· είναι περιορισμένος στη διάσταση που τυχαίνει να μετράει.
Προσέξτε και τον χρόνο. Οι μέσοι όροι δεκαπέντε λεπτών κρύβουν την έκρηξη που χαλούσε μια κλήση, οπότε ένα στιγμιότυπο οθόνης που τραβήχτηκε μετά το παράπονο είναι αδύναμη απόδειξη. Πάρτε δείγματα κατά τη διάρκεια του προβλήματος και κρατήστε τη χρονική σφραγίδα μαζί με την έξοδο.
Η ανερχόμενη ζεύξη και η ουρά μπροστά της
Οι μετρητές διεπαφής απαντούν στο ερώτημα του εύρους ζώνης που οι αριθμοί της CPU δεν μπορούν. Διαχωρίζουν επίσης τη χωρητικότητα από την απώλεια, που είναι διαφορετικές βλάβες με διαφορετικές διορθώσεις:
ip -s link show dev eth0
tc -s qdisc show dev eth0
nstat -az TcpRetransSegs TcpExtTCPLostRetransmit
Ένας σύνδεσμος κοντά στην παραχωρημένη του ταχύτητα κατά τη δοκιμή σας είναι η εξήγηση, και καμία ποσότητα ελεύθερης CPU δεν το αλλάζει. Η γραμμή qdisc προσθέτει τη λεπτομέρεια που μετράει για την διαδραστική κίνηση: η συσσώρευση και οι απώλειες σας λένε αν τα πακέτα περιμένουν σε ουρά πριν φύγουν. Μια ουρά που γεμίζει κάτω από ένα μεγάλο ανέβασμα παράγει ακριβώς το σύμπτωμα που οι άνθρωποι χρεώνουν στον απομακρυσμένο διακομιστή, δηλαδή νωθρές κλήσεις σε μια σύνδεση που ακόμη σκοράρει καλά στα μετρήματα.
Οι μετρητές επαναμετάδοσης πιάνουν την περίπτωση όπου τα πακέτα φεύγουν αλλά ποτέ δεν φτάνουν καθαρά. Αν οι επαναμεταδόσεις αυξάνονται στο αργό παράθυρο και η διεπαφή απέχει πολύ από τη χωρητικότητα, το πρόβλημα βρίσκεται στη διαδρομή και όχι στον κεντρικό υπολογιστή, και η μετακίνηση σε άλλο τελικό σημείο στην ίδια πόλη δεν θα βοηθήσει.
Τα νούμερα συνεδριών περιγράφουν ζήτηση, όχι εφεδρεία
Κάθε δημόσιος κατάλογος δείχνει κάποιο πλήθος συνδεδεμένων χρηστών, και σχεδόν κανένας δεν σας λέει τι κάνουν αυτοί οι χρήστες. Είκοσι συνεδρίες με διαδραστική εργασία και τέσσερις συνεδρίες που κατεβάζουν μεγάλα αρχεία παράγουν πολύ διαφορετικά φορτία στο ίδιο υλικό. Το δεύτερο μοτίβο είναι αόρατο σε έναν αριθμό χρηστών, και είναι αυτό που χαλάει ένα βράδυ. Έτσι ένα νούμερο συνεδριών διαβάζεται καλύτερα ως υπόδειξη για τη ζήτηση, ποτέ ως δήλωση για εφεδρική χωρητικότητα.
| Number on the page | What it is really measuring | What it cannot tell you |
|---|---|---|
| Connected users | How many sessions hold an address | How much each one is transferring |
| Load or score | Whatever the operator chose to publish | Whether that definition matches your task |
| Uptime | How long since the process started | Current capacity, queue depth or packet loss |
| Distance or ping | Round-trip time on a small probe | Throughput under sustained transfer |
Σε έναν κεντρικό υπολογιστή που ελέγχετε, το αρχείο κατάστασης δίνει τη διάσταση που λείπει. Το OpenVPN γράφει περιοδικό στιγμιότυπο που περιλαμβάνει μετρητές byte ανά πελάτη, και αυτό αρκεί για να δείτε αν μία συνεδρία ευθύνεται για ολόκληρη την ανερχόμενη ζεύξη:
status /run/openvpn/server.status 10
# then, after at least one interval
grep -E "^CLIENT_LIST" /run/openvpn/server.status
Δύο δείγματα δέκα δευτερόλεπτα απόσταση μετατρέπουν αυτούς τους αθροιστικούς μετρητές σε ρυθμό ανά πελάτη. Αυτή είναι η μέτρηση που υποκαθιστά ένας αριθμός χρηστών, και έτσι επίσης ανακαλύπτετε ότι ένας μόνο κακώς ρυθμισμένος πελάτης γεμίζει μέχρι κόρου τη σύνδεση κάθε βράδυ την ίδια ώρα.
Τα όρια ανά συνεδρία κρύβονται στην πολιτική
Ένας διακομιστής μπορεί να είναι άεργος και παρόλα αυτά να αρνείται να σας δώσει εύρος ζώνης. Τα όρια ρυθμού, τα πλαφόν εύρους ζώνης ανά πελάτη και η διαμόρφωση κίνησης εφαρμόζονται συχνά ανά κοινό όνομα ή ανά δεξαμενή, οπότε δύο χρήστες στην ίδια πύλη μπορούν να πάρουν εντελώς διαφορετικά αποτελέσματα. Ο μηχανισμός δεν είναι λεπτός, αλλά είναι αόρατος από έξω επειδή το τούνελ σηκώνεται κανονικά και στις δύο περιπτώσεις.
Ψάξτε για διαμόρφωση στη διεπαφή του τούνελ και όχι στη φυσική. Ελέγξτε αν το όριο ακολουθεί τον χρήστη, το πιστοποιητικό ή τη δεξαμενή διευθύνσεων. Αν ο δοκιμαστικός σας λογαριασμός πέσει στη δεξαμενή χωρίς όριο, θα συμπεράνετε ότι ο διακομιστής είναι εντάξει και ότι ο χρήστης που παραπονιέται κάνει λάθος. Αυτό το συμπέρασμα είναι χειρότερο από κανένα συμπέρασμα, γιατί κλείνει το αίτημα.
Συγκρίνετε δύο τελικά σημεία με μία σταθερή εργασία
Το πείραμα από την πλευρά του πελάτη αξίζει ακόμη να εκτελεστεί, αλλά μόνο αν οι μεταβλητές είναι καρφωμένες. Χρησιμοποιήστε την ίδια συσκευή, το ίδιο δίκτυο πρόσβασης, το ίδιο πρωτόκολλο και το ίδιο αρχείο προορισμού, και μετά επαναλάβετε απέναντι σε δεύτερο τελικό σημείο σε παρόμοια απόσταση. Οτιδήποτε αλλάζει μεταξύ των εκτελέσεων, μαζί με την ώρα της ημέρας, μολύνει το αποτέλεσμα.
Καταγράψτε τις αποτυχίες εξίσου προσεκτικά με τις επιτυχίες. Μια σειρά όπου τρία τελικά σημεία δουλεύουν και ένα λήγει σε χρονικό όριο είναι πιο κατατοπιστική από τέσσερις αριθμούς ταχύτητας, γιατί δείχνει πρόβλημα διαδρομής ή πολιτικής και όχι χωρητικότητας. Εκτελέστε κάθε περίπτωση τουλάχιστον δύο φορές· ένα μόνο αργό δείγμα δεν αποδεικνύει τίποτα σε κοινόχρηστο δίκτυο.
Τέλος, κρατήστε τους αριθμούς που συλλέξατε μαζί με τον ισχυρισμό που στηρίζουν. Το "Αυτό το τελικό σημείο ολοκλήρωσε τη μεταφορά στο ίδιο παράθυρο όπου το άλλο κόλλησε" είναι υπερασπίσιμο, ενώ το "αυτό το τελικό σημείο είναι ταχύτερο" προσκαλεί μια διαφωνία που δεν κερδίζεται με σκορ αρχικής σελίδας. Το εγχειρίδιο του OpenVPN 2.6 τεκμηριώνει το αρχείο κατάστασης και τις επιλογές διαμόρφωσης αν χρειάζεστε τις ακριβείς οδηγίες για την πλευρά του κεντρικού υπολογιστή.