إيقاف خدمات VPN والوكيل في لينكس بالترتيب الصحيح
أوقف المستهلك ما دام المسار موجودًا، ثم الوكيل، ثم النفق عبر مالكه. استخدم ExecStop وTimeoutStopSec عن قصد، لا بقتل عشوائي واسع.
نادرًا ما يكون التعليق أثناء إيقاف التشغيل مع تشغيل وكيل خللًا في الـVPN، حتى عندما يكون الـVPN آخر ما يظهر على الشاشة. فالتطبيقات الموجودة خلف الوكيل ما زالت تنتظر مسارًا على وشك أن يختفي، والوحدة التي تملك النفق لم يُطلب منها بعد إغلاقه. وما يبدو خدمة بطيئة هو في الغالب مشكلة في الترتيب. وحلّ الترتيب يعالج من هذه الحالات أكثر مما تعالجه أي زيادة في المهلة.
اعمل من الداخل إلى الخارج بالعكس: المستهلكات أولًا، ثم الوكيل، ثم النفق، وكل منها يوقفه المكوّن الذي بدأه.
اسرد الوحدات قبل إيقاف أي شيء
دوّن وحدة التطبيق ووحدة الوكيل ومالك الـVPN المشاركين في تشغيل عادي. وأضف أي مُحلِّل أو مساعد له إغلاق خاص به، فهذه هي الأشياء التي ينساها الناس في الثانية صباحًا. وبدون تلك القائمة، فإن أول أمر إيقاف تكتبه يختار ضحية عشوائية.
الأسماء دليل ضعيف. فقد يشترك وكيل مستخدم ووكيل نظام ونفق حساب آخر في الاسم نفسه مع دورات حياة غير مترابطة إطلاقًا.
أنهِ العمل ثم أوقف المستهلك
الإيقاف المخطط يبدأ بالتطبيق: دعه يُكمل طلباته أو يلغيها، ثم أوقف الوكيل عبر وحدة خدمته. وإذا كان على التطبيق أن يستمر في العمل بعد زوال النفق، فرتّب ذلك عن قصد بدلًا من تركه معلقًا بمسار على وشك أن يزول.
الطلبات التي كانت أثناء الإيقاف لا تزال جارية يجب أن تُدوّن في السجل، لأنها مصدر عاصفة إعادة المحاولة عند التشغيل التالي.
ExecStop وExecStopPost أداتان مختلفتان
ExecStop= هو عملية الإيقاف المتزامنة؛ أما ExecStopPost= فهو تنظيف يعمل حتى بعد بدء فاشل. أمر إيقاف يكتفي بإرسال إشارة إلى عملية ثم يعود يجعل systemd يمضي قدمًا بينما المستهلك ما زال يفرغ ما لديه. وكل ما يجب أن يحدث في جميع الأحوال مكانه المتغير اللاحق، وكل ما يجب أن يعطّل الإيقاف مكانه المتغير المتزامن. افحص الوحدة الفعّالة وملفاتها الفرعية بدلًا من تعديل ملف من الحزمة في مكانه.
مخطط الاعتماديات يرتب مهام الإيقاف. وهو لا يحوّل برنامجًا غير متزامن إلى متزامن، ولا يجبر تطبيقًا بعيدًا على تثبيت بياناته.
حدّد سقفًا للإيقاف واعرف ثمن ذلك السقف
TimeoutStopSec= يحدّ من أمر الإيقاف ومن إنهاء الخدمة لنفسها معًا، ويصعّد systemd إلى قتل قسري عند انتهاء المهلة. اختر القيمة بناءً على سلوك التفريغ الحقيقي للتطبيق، ودوّن ما قد يُفقد عند بلوغها. والرقم الذي يُختار لأن الجهاز يجب أن ينطفئ أسرع هو إعداد لفقدان البيانات في ثوب آخر.
حين يبقى الإيقاف بطيئًا، سجّل الوحدة وعملياتها الفرعية والفترة الزمنية في السجل ونتيجة المهلة. إن تقصير كل مهلة أو اللجوء إلى قتل واسع هو ما يحوّل الإيقاف النظيف إلى حالة تالفة عند الإقلاع التالي.
افصل الاتصال عبر المالك ثم اختبر ثلاث حالات
بعد أن توقف المستهلكات، اطلب من المدير الذي يملك النفق أن يفصل الاتصال: نسخة systemd أو اتصال NetworkManager النشط أو خدمة المورّد. فقتل عملية OpenVPN غير ذات صلة لا يزيل بالضرورة الجلسة التي وفّرت المسار، وقد يعيد وكيل له سياسة إعادة تشغيل إنشاء طلب أثناء تفكيكك للمسار. ونسّق تلك السياسة مع الإيقاف المخطط قبل أن تبدأ.
اختبر إيقافًا عاديًا، وإيقافًا مع طلب نشط، وإيقافًا يفشل فيه النفق أولًا. فتسلسل قابل للتكرار مع موعد نهائي أفضل من إيقاف سريع ينجح مرة واحدة.