Užstrigimai išjungiant, kai veikia proxy, retai būna VPN klaida, net kai VPN yra paskutinis dalykas, matomas ekrane. Programos už proxy vis dar laukia kelio, kuris tuoj išnyks, o tunelį valdantis unit dar nebuvo paprašytas jo uždaryti. Tai, kas atrodo kaip lėta paslauga, paprastai yra tvarkos problema. Sekos sudarymas išsprendžia daugiau tokių atvejų nei bet koks timeout pakeitimas.

Eikite į išorę atvirkštine tvarka: pirmiausia vartotojai, tada proxy, o paskui tunelis — kiekvieną sustabdo jį paleidęs komponentas.

Sudarykite unit sąrašą prieš ką nors stabdydami

Užsirašykite programos unit, proxy unit ir VPN savininką, dalyvaujančius įprastame paleidime. Pridėkite bet kurį resolver ar pagalbinį komponentą, turintį savo uždarymą, nes būtent juos pamirštama antrą valandą nakties. Be šio sąrašo pirmoji įrašyta stabdymo komanda auką pasirinks atsitiktinai.

Vardai yra silpnas įrodymas. Naudotojo proxy, sistemos proxy ir kitos paskyros tunelis gali turėti tą patį vardą, bet visiškai nesusijusius gyvavimo ciklus.

Pirmiausia baikite darbą, tada sustabdykite vartotoją

Planuotas sustabdymas prasideda nuo programos: leiskite jai baigti arba atšaukti savo užklausas, tada sustabdykite proxy per jo paslaugos unit. Jei programa turėtų toliau veikti dingus tuneliui, sutvarkykite tai sąmoningai, o ne palikite ją prijungtą prie maršruto, kuris tuoj išnyks.

Užklausos, kurios sustabdymo metu buvo skrydyje, priklauso įrašui, nes būtent iš ten kyla pakartotinių bandymų audra kitą kartą paleidžiant.

ExecStop ir ExecStopPost yra skirtingi instrumentai

ExecStop= — tai sinchroninė stabdymo operacija; ExecStopPost= — tai valymas, kuris vykdomas net po nepavykusio paleidimo. Stabdymo komanda, kuri tik pasiunčia procesui signalą ir grįžta, leidžia systemd judėti toliau, kol vartotojas dar išstumia duomenis. Viskas, kas turi įvykti bet kuriuo atveju, priklauso po-stabdymo variantui, o viskas, kas turi blokuoti stabdymą, priklauso sinchroniniam. Tikrinkite galiojantį unit ir jo drop-in failus, o ne redaguokite paketo failą vietoje.

Priklausomybių grafas surikiuoja stabdymo užduotis. Jis nepaverčia asinchroninio scenarijaus sinchroniniu ir neverčia nuotolinės programos patvirtinti savo duomenų.

Apribokite stabdymą ir žinokite, kiek ši riba kainuoja

TimeoutStopSec= riboja ir stabdymo komandą, ir paties serviso užbaigimą, o pasibaigus limitams systemd pereina prie priverstinio žudymo. Vertę rinkitės pagal tikrąjį programos išstūmimo elgesį ir užsirašykite, kas gali būti prarasta, kai limitas suveiks. Skaičius, pasirinktas todėl, kad mašina turi išsijungti greičiau, yra duomenų praradimo nuostata po kitu vardu.

Kai stabdymas vis dar lėtas, užfiksuokite unit, jo antrinius procesus, žurnalo intervalą ir timeout rezultatą. Visų timeout trumpinimas ar griebimasis plataus žudymo yra būdas, kuriuo švarūs sustabdymai virsta sugadinta būsena kitą kartą įjungiant.

Atsijunkite per savininką, tada išbandykite tris atvejus

Kai vartotojai sustabdyti, paprašykite tunelį valdančio valdytojo atsijungti: systemd egzempliorių, aktyvų NetworkManager ryšį ar tiekėjo paslaugą. Nesusijusio OpenVPN proceso nužudymas nebūtinai pašalina sesiją, kuri suteikė maršrutą, o proxy su perkrovimo politika gali iš naujo sukurti užklausą, kol jūs ardote kelią. Tą politiką suderinkite su planuotu sustabdymu prieš pradėdami.

Išbandykite įprastą sustabdymą, sustabdymą su aktyvia užklausa ir sustabdymą, kai tunelis sugenda pirmas. Pakartojama seka su terminu yra geresnė už greitą išjungimą, kuris veikia vieną kartą.

Susiję straipsniai