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

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

Καταγράψτε τις μονάδες πριν σταματήσετε οτιδήποτε

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

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

Ολοκληρώστε την εργασία και μετά σταματήστε τον καταναλωτή

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

Τα αιτήματα που ήταν σε εξέλιξη κατά τον τερματισμό ανήκουν στο αρχείο, γιατί από εκεί προέρχεται η καταιγίδα επαναλήψεων στην επόμενη εκκίνηση.

Τα ExecStop και ExecStopPost είναι διαφορετικά εργαλεία

ExecStop= είναι η σύγχρονη λειτουργία τερματισμού· το ExecStopPost= είναι καθαρισμός που εκτελείται ακόμη και μετά από αποτυχημένη εκκίνηση. Μια εντολή τερματισμού που απλώς στέλνει σήμα σε μια διεργασία και επιστρέφει αφήνει το systemd να προχωρήσει ενώ ο καταναλωτής ακόμη εκκενώνει. Ό,τι πρέπει να συμβεί οπωσδήποτε ανήκει στην παραλλαγή μετά, και ό,τι πρέπει να μπλοκάρει τον τερματισμό ανήκει στη σύγχρονη. Εξετάστε την ενεργή μονάδα και τα πρόσθετά της αντί να επεξεργάζεστε ένα αρχείο πακέτου επί τόπου.

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

Περιορίστε τον τερματισμό και μάθετε τι κοστίζει το όριο

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

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

Αποσυνδεθείτε μέσω του ιδιοκτήτη και μετά δοκιμάστε τρεις περιπτώσεις

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

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

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