Macet saat mematikan layanan sementara proksi berjalan jarang merupakan bug VPN, bahkan ketika VPN adalah hal terakhir yang terlihat di layar. Aplikasi di belakang proksi masih menunggu jalur yang akan segera hilang, dan unit yang memiliki terowongan belum diminta menutupnya. Yang tampak seperti layanan lambat biasanya masalah urutan. Urutan menyelesaikan lebih banyak kasus ini daripada perubahan batas waktu apa pun.

Bekerjalah ke arah luar dalam urutan terbalik: konsumen dulu, lalu proksi, lalu terowongan, masing-masing dihentikan oleh komponen yang memulainya.

Daftar unit sebelum menghentikan apa pun

Catat unit aplikasi, unit proksi, dan pemilik VPN yang terlibat dalam proses normal. Tambahkan setiap resolver atau pembantu yang punya pembongkaran sendiri, karena itulah yang orang lupakan pada pukul dua pagi. Tanpa daftar itu, perintah berhenti pertama yang Anda ketik memilih korban secara acak.

Nama adalah bukti lemah. Proksi pengguna, proksi sistem, dan terowongan akun lain dapat berbagi nama sementara siklus hidupnya sama sekali tidak berhubungan.

Selesaikan pekerjaan, lalu hentikan konsumen

Penghentian terencana dimulai dari aplikasi: biarkan ia menyelesaikan atau membatalkan permintaannya, lalu hentikan proksi melalui unit layanannya. Jika aplikasi harus tetap berjalan setelah terowongan hilang, aturlah itu dengan sengaja alih-alih membiarkannya bergantung pada rute yang akan segera lenyap.

Permintaan yang masih berjalan saat penghentian harus masuk catatan, karena dari situlah badai percobaan ulang datang pada start berikutnya.

ExecStop dan ExecStopPost adalah alat yang berbeda

ExecStop= adalah operasi berhenti yang sinkron; ExecStopPost= adalah pembersihan yang berjalan bahkan setelah start yang gagal. Perintah berhenti yang hanya mengirim sinyal ke proses lalu kembali membiarkan systemd melanjutkan sementara konsumen masih mengosongkan. Segala sesuatu yang harus terjadi bagaimanapun juga termasuk varian sesudah, dan segala sesuatu yang harus memblokir penghentian termasuk varian sinkron. Periksa unit efektif dan drop-in-nya alih-alih menyunting berkas paket di tempat.

Graf dependensi mengurutkan tugas berhenti. Ia tidak mengubah skrip asinkron menjadi sinkron, juga tidak memaksa aplikasi jarak jauh menyimpan datanya.

Batasi penghentian dan ketahui biaya batas itu

TimeoutStopSec= membatasi perintah berhenti dan penghentian layanan itu sendiri, dan systemd beralih ke pembunuhan paksa saat batas habis. Pilih nilainya dari perilaku pengosongan aplikasi yang sebenarnya, dan catat apa yang bisa hilang saat batas tercapai. Angka yang dipilih karena mesin harus mati lebih cepat adalah pengaturan kehilangan data yang menyamar.

Ketika penghentian masih lambat, rekam unit, proses anaknya, interval jurnal, dan hasil batas waktu. Memperpendek setiap batas waktu atau meraih pembunuhan massal adalah cara penghentian bersih berubah menjadi keadaan rusak pada boot berikutnya.

Putuskan melalui pemilik, lalu uji tiga kasus

Setelah konsumen mati, mintalah manajer yang memiliki terowongan untuk memutus: instans systemd, koneksi aktif NetworkManager, atau layanan vendor. Membunuh proses OpenVPN yang tidak terkait tidak selalu menghapus sesi yang menyediakan rute, dan proksi dengan kebijakan restart dapat membuat ulang permintaan saat Anda membongkar jalur. Selaraskan kebijakan itu dengan penghentian terencana sebelum Anda mulai.

Uji penghentian normal, penghentian dengan permintaan aktif, dan penghentian di mana terowongan gagal lebih dulu. Urutan yang dapat diulang dengan tenggat mengalahkan pematian cepat yang berhasil sekali.

Artikel terkait