Zaseknutia pri zastavovaní, keď beží proxy, sú zriedka chybou VPN, aj keď je VPN posledná vec viditeľná na obrazovke. Aplikácie za proxy stále čakajú na cestu, ktorá o chvíľu zmizne, a jednotka, ktorá tunel vlastní, ešte nebola požiadaná, aby ho zavrela. To, čo vyzerá ako pomalá služba, je zvyčajne problém poradia. Usporiadanie vyrieši viac takýchto prípadov než akákoľvek zmena časového limitu.

Postupujte smerom von v opačnom poradí: najprv spotrebitelia, potom proxy a nakoniec tunel — každý zastaví komponent, ktorý ho spustil.

Pred zastavením čohokoľvek si zapíšte zoznam jednotiek

Zapíšte jednotku aplikácie, jednotku proxy a vlastníka VPN, ktorí sa zúčastňujú bežného spustenia. Pridajte akýkoľvek resolver alebo pomocný komponent s vlastným ukončením, pretože práve na tie sa o druhej v noci zabúda. Bez tohto zoznamu prvá napísaná zastavovacia komenda vyberie obeť náhodne.

Mená sú slabý dôkaz. Používateľské proxy, systémové proxy a tunel iného účtu môžu zdieľať rovnaké meno a mať úplne nesúvisiace životné cykly.

Najprv dokončite prácu, potom zastavte spotrebiteľa

Plánované zastavenie začína aplikáciou: nechajte ju dokončiť alebo zrušiť jej požiadavky, potom zastavte proxy cez jeho službovú jednotku. Ak má aplikácia pokračovať v činnosti po zmiznutí tunela, zariaďte to zámerne, namiesto toho, aby ste ju nechali pripnutú k trase, ktorá o chvíľu zmizne.

Požiadavky, ktoré boli počas zastavenia v pohybe, patria do záznamu, pretože odtiaľ pochádza búrka opakovaní pri ďalšom spustení.

ExecStop a ExecStopPost sú rozdielne nástroje

ExecStop= — je synchrónna operácia zastavenia; ExecStopPost= — je čistenie, ktoré sa vykoná aj po neúspešnom spustení. Zastavovacia komenda, ktorá iba pošle procesu signál a vráti sa, nechá systemd pokračovať, kým spotrebiteľ ešte vyprázdňuje. Všetko, čo sa musí stať bez ohľadu na okolnosti, patrí do variantu po zastavení, a všetko, čo musí zastavenie blokovať, patrí do synchrónneho variantu. Prezrite si účinnú jednotku a jej drop-in súbory namiesto úpravy súboru balíka na mieste.

Graf závislostí zoraďuje úlohy zastavenia. Nepremení asynchrónny skript na synchrónny ani neprinúti vzdialenú aplikáciu potvrdiť svoje dáta.

Ohraničte zastavenie a vedzte, čo to ohraničenie stojí

TimeoutStopSec= obmedzuje aj zastavovaciu komendu, aj vlastné ukončenie služby, a keď limit vyprší, systemd prejde na nútené zabitie. Hodnotu vyberte podľa skutočného správania aplikácie pri vyprázdňovaní a zapíšte, čo sa môže stratiť, keď limit nastane. Číslo zvolené preto, že stroj sa má vypnúť rýchlejšie, je nastavenie straty dát pod iným menom.

Keď je zastavenie stále pomalé, zachyťte jednotku, jej podriadené procesy, interval žurnálu a výsledok časového limitu. Skracovanie všetkých limitov alebo siahnutie po plošnom zabíjaní je spôsob, akým sa čisté zastavenia menia na poškodený stav pri ďalšom štarte.

Odpojte sa cez vlastníka a potom otestujte tri prípady

Keď sú spotrebitelia zastavení, požiadajte správcu, ktorý tunel vlastní, o odpojenie: inštanciu systemd, aktívne spojenie NetworkManager alebo službu dodávateľa. Zabitie nesúvisiaceho procesu OpenVPN nemusí odstrániť reláciu, ktorá dodala trasu, a proxy s politikou reštartu môže znovu vytvoriť požiadavku, kým cestu rozoberáte. Zosúlaďte túto politiku s plánovaným zastavením skôr, než začnete.

Otestujte bežné zastavenie, zastavenie s aktívnou požiadavkou a zastavenie, pri ktorom tunel zlyhá ako prvý. Opakovateľná sekvencia s termínom je lepšia než rýchle vypnutie, ktoré funguje raz.

Súvisiace články