بنية تحتية خاصة / دون الحاجة إلى هويةاقرأ مبدأ الخصوصية
ملاحظات حقل KoalaVPS

اجعل الوكيل خدمة، لا طرفية منسية.

شغّل عمّالًا طويلي الأمد بحالة صريحة وأذونات محدودة وخطة استعادة.

حزّم الـ worker

استخدم بيئة تشغيل مدعومة واعتماديات مثبّتة ومدير خدمة أو حاوية. اضبط حدود إعادة التشغيل ومستخدم خدمة مخصص. خلي بيانات اعتماد المزوّد الخاصة في إعدادات محمية برا الملفات العامة للتطبيق.

احفظ التقدم قبل ما الإجراءات تفرق

استخدم طابور أو قاعدة بيانات متينة للمهام. عيّن معرّف عملية فريد، سجّل الطلبات الخارجية، وطابق النتائج غير المؤكدة. إعادة التشغيل مش المفروض تبعت إيميل تاني أو تنشئ طلب تاني أو تحسب مرتين.

أضف مراقبة مفيدة

راقب إتمام المهام وعمر الطابور ومعدل الأخطاء والتكلفة بدل ما تتحقق بس من وجود عملية. خلي السجلات صغيرة كفاية للمراجعة وامسح الرموز والمطالبات والمستندات اللي مش محتاج تحتفظ بيها.

حدد سقفًا واضحًا

حدّد إنفاق الموديل والتزامن في المتصفح ووقت التشغيل وعدد المحاولات. خلي فيه مفتاح إيقاف سهل ومسار مراجعة بشري للإجراءات المهمة. العامل الأصغر اللي بيتم مراقبته كويس أسهل في الثقة من عامل غير مقيّد.

استخدم مشرف وجدول مدروس

Systemd وDocker طرق شائعة لتخلي العملية تفضل شغالة بعد قطع الاتصال بالطرفية. بالنسبة لخدمة systemd، Type=exec ممكن يبلّغ عن فشل التنفيذ بشكل مباشر أكتر من التشغيل البسيط في الخلفية، وRestart=on-failure ممكن يعيد تشغيل الحالات الفاشلة بسياسة محدودة. المهام المجدولة لازم تتجنب التداخل في التشغيل. خلي مجلد العمل ومستخدم الخدمة والبيئة واضحين. يفترض المثال أن مستخدم koala-agent والبيئة الافتراضية ووحدة العامل وملف البيئة الخاص موجودة بالفعل؛ عدّلها قبل تثبيت وحدة.

  • استخدم حساب خدمة مخصص
  • حدد تأخير إعادة التشغيل وسقف الأعطال
  • تحقق من حالة المهمة السابقة قبل بدء تشغيل مجدول
[Unit]
Description=Example agent worker
After=network-online.target

[Service]
Type=exec
User=koala-agent
WorkingDirectory=/opt/koala-agent
EnvironmentFile=/etc/koala-agent.env
ExecStart=/opt/koala-agent/.venv/bin/python -m worker
Restart=on-failure
RestartSec=10
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

حدد ميزانية يومية وحد للتكرار

حدد للعامل حد أقصى لعدد الطلبات وحد للإنفاق ومهلة تنفيذ. استخدم سجل idempotency دائم للإجراءات اللي بتأثر على العالم الخارجي. ممكن ضغطة ناجحة في المتصفح تحصل قبل ما العملية تستقبل رد؛ افحص الحالة الخارجية قبل ما تحاول تاني. تركيب الأسرار في Docker Compose ممكن يخلي السر بره الصورة، لكن الصلاحيات والتطبيق اللي بيستهلك السر لسه محتاجين مراجعة.

ادّي مهمة دورية سياسة صريحة للتعويض عن التأخير

استخدم خدمة طويلة التشغيل لعامل طابور مستمر، وخدمة oneshot بتشتغل بمؤقت لمهمة مجدولة محدودة. مع مؤقت تقويم systemd، خيار Persistent=true ممكن يشغّل تفعيل واحد فايت بعد التوقف؛ لكنه مش بيعيد بناء تراكم أعمال كامل. قرّر إذا كان اللحاق ده مرغوب. RandomizedDelaySec ممكن يوزّع أوقات البدء، بينما قفل على مستوى التطبيق بيمنع نسختين من معالجة نفس العمل المجدول.

  • سجّل المنطقة الزمنية المقصودة وافحص أوقات التشغيل التالية قبل تفعيل الجدولة.
  • اجعل الموعد النهائي لتنفيذ المهمة أقصر من أي فترة يجب ألا تتداخل، أو استخدم عقد إيجار دائم مع انتهاء صلاحية وملكية.
  • خلي المهمة تختار الشغل المعلّق من الحالة المخزّنة بدل ما تفترض إن كل حدث مؤقت سابق اتنفّذ.
  • اتأكد من إصدار systemd المثبّت قبل ما تستخدم توجيه من أحدث دليل.
# Read-only checks after creating your own matching units.
systemctl list-timers --all
systemctl status koala-agent.service
journalctl -u koala-agent.service --since today --no-pager

فرّق بين حلقة تعطل وعامل متوقف

سياسة إعادة التشغيل ممكن تسترد عملية فشلت، لكن تكرار بيانات اعتماد غلط أو ترحيل مكسور كل كام ثانية بيخلي العطل أعلى صوتًا. حدّد بدايات الخدمة ونبّه على الفشل المتكرر. العملية الشغالة كمان ممكن تعلّق: قيس عمر أقدم مهمة وآخر عملية اكتملت. اختبر انقطاع API وقرص فاضي وإيقاف عملية بمهام مؤقتة، وبعدين اتأكد إن الحالة الدائمة بتمنع تكرار الإجراءات الخارجية.

  • حدّد ميزانية للمزوّد ومهلة للطلب في التطبيق، وكمان حد لـ CPU/الذاكرة على بيئة التشغيل.
  • حاويات Docker مالهاش حد ذاكرة مفيد خاص بحمل العمل لمجرد إنها حاويات؛ اضبط الحدود واختبرها بشكل متعمد.
  • خزّن سرًا خارج الصورة والشجرة العامة، ثم اختبر أن سجلات الأعطال والتشخيصات تحجبه.
  • سيب مسار إيقاف يدوي واطلب مراجعة مناسبة للإنفاق أو الكتابة على الإنتاج أو الرسائل الخارجية.
اضبط بنيتك التحتية

خد السيطرة.
انشر بشروطك.

بدون أوراق هوية. وصول كامل للمسؤول. فواتير بالعملات الرقمية.