Apache Airflow / دليل حلول تحريري

بقاء المهام في الصف دون بدء التنفيذ

تحديد حدود القبول والتوجيه وبدء العامل قبل زيادة التزامن أو الإعادة.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى

قاعدة معرفة للقراءة فقط · بلا تعليقات عامة

تعرّف على الأعراض

تظل نسخ المهام في حالة queued مدة مستمرة دون ناتج تجاري جديد، وقد يكون محتوى سجل المهمة قليلاً أو غائباً. وفي الوقت نفسه قد تتقدم DAG أخرى أو صفوف أخرى، لذلك لا يعني العرض بالضرورة توقف المنصة كلها.

افهم الأسباب المحتملة

  • قد يكون القيد الفعلي ميزانية موارد، أو سعة المنفذ، أو اختلاف اشتراك الصف عن توجيه المهمة، أو فشل بدء العامل. وقد يخفي تعذر الوصول إلى خلفية السجل أدلة مهمة بدأت فعلاً؛ لذا يجب فصل فشل العرض من فشل التنفيذ.

التقاط الانتقال والمحاولة الدقيقة

سجل هوية DAG والتشغيلة والمهمة وفهرس التوزيع والمحاولة، ثم التقط أزمنة scheduled وqueued وأي انتقال إلى running من الأدلة الموجودة. حدد المنفذ المختار، لأن تشخيص العمال الذين يستقبلون من صف يختلف عن تشخيص حاوية تنشأ لكل مهمة. لا تثبت لوحة سجل المهمة وحدها حدوث الإرسال؛ فقد يفشل مسار جلب السجل مستقلاً عن التنفيذ. احفظ سياق أخطاء المجدول والمنفذ بعد إزالة المعلومات الحساسة. لا تمسح المهمة لمجرد الحصول على محاولة جديدة قبل فهم احتمال استمرار التنفيذ القديم أو إنتاجه أثراً خارجياً لم تتأكد نتيجته.

فحص قبول الموارد الموزون

راجع الحوض الذي تستخدمه المهمة ووزنها بعدد الخانات، وقارن ذلك بإجمالي الحوض وسعته المشغولة. افحص بعده حدود مهام DAG والتشغيلات النشطة وفق نطاق كل إعداد الموثق. لا يمكن لطلب خمس خانات أن يتسع في ميزانية أربع، حتى إذا لم يكن أي عامل مشغولاً. وللملء التاريخي حد تزامن مستقل في Airflow 3.1؛ لذا أدرج حمله عند حساب ميزانية تبعية مشتركة. قد يكون الانتظار حماية مقصودة لنظام خارجي مشبع. وقد يحول رفع الحوض دون دليل التراكم المنضبط إلى مهل ومحاولات. يكشف الحساب المحلي الطلب المستحيل فقط، ولا يغير أي إعداد.

python فحص محلي لطلب خانات مستحيل
pool_total = 4
requested_slots = 5
can_ever_fit = requested_slots <= pool_total
assert not can_ever_fit
print(can_ever_fit)
الناتج المتوقع
False

لا يجعل انتظار العمال خمسة تتسع في إجمالي معلن أربع.

مقارنة التوجيه بقدرة العامل

إذا كان المنفذ يستخدم صفوفاً مسماة، فقارن صف المهمة باشتراكات العمال المعتمدة؛ فالعمال الذين يخدمون default لا يقبلون بالضرورة reports. وإذا كان التنفيذ بحاويات، فافحص أدلة الإنشاء والبدء الموجودة بدلاً من افتراض انطباق نموذج الصف نفسه. تأكد من توفر الشفرة والمزود والبيئة المطلوبة في هدف التنفيذ؛ فلا يثبت نجاح التحليل في موضع آخر ذلك. ميّز غياب مسار التوجيه من نفاد الموارد ومن فشل الاستيراد. يحتاج كل منها علاجاً مصرحاً مختلفاً، وقد لا تعالج زيادة عمال عامين أياً منها إذا لم يستطيعوا استلام هذه المهمة أو بدءها.

إصلاح حد واحد ومصالحة العمل غير المؤكد

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

تحقق من نجاح الإصلاح

بعد تصحيح مصرح به، راقب انتقال مهمة اصطناعية محدودة من القبول إلى running ثم إلى ناتج متحقق منه. قارن مدة انتظار الصف بمدة التنفيذ بصورة مستقلة، وتأكد من استمرار صحة التبعية المحمية. تحقق من أن المحاولة الأصلية لم تنشئ أثراً ثانياً، واحفظ أدلة التوجيه وإصدار البيئة مع النتيجة.

امنع تكرار المشكلة

  • تحقق من أوزان المهام مقابل إجمالي أحواضها، ووثق التوجيه الخاص بكل منفذ، واجعل بيئات العمال قابلة لإعادة البناء. صمم تنبيهاً لعمر الصف المستمر يتضمن المورد المعني وسياق المحاولة، بدلاً من زيادة كل حد تزامن تلقائياً عند ظهور انتظار.

المراجع الرسمية