الخلاصة

  • بدأ GitHub الحادث 20frdtvv3yg6 عند 20:43:43Z في 22 يوليو، وأعلن حله عند 22:09:26Z بعد 85 دقيقة و43 ثانية.
  • واجه نحو 3% من عمليات Actions التي تستخدم مشغلات يستضيفها GitHub تأخراً يتجاوز خمس دقائق قبل البدء.
  • كان جزء صغير قد يفشل بعد انتظار ممتد؛ حدد GitHub السبب وطبق التخفيف عند 22:01:57Z ثم أغلق الحادث بعد نحو ثماني دقائق.
  • المقام هو عمليات المشغلات المستضافة لدى GitHub، وليس كل سير عمل Actions أو المشغلات الذاتية أو خدمات GitHub.
  • وعد GitHub بتحليل للسبب الجذري؛ ولا يجوز استنتاج آلية العطل أو تكراره قبل نشره.

لمهمة التكامل المستمر ساعتان. تبدأ الأولى عند دخول الطابور، وتبدأ الثانية عندما ينفذ المشغل الأوامر. تحسن الفرق الساعة الثانية بالتخزين المؤقت والصور الأصغر والاختبارات المتوازية، بينما تفترض أن الأولى تخص المنصة وقريبة من الصفر.

جعل الحادث الانتظار الأول مرئياً. تبدو 3% أقلية على مستوى منصة عالمية. لكنها تمثل كامل مسار التسليم بالنسبة إلى إصدار وقع داخل هذه الأقلية.

شراء التنفيذ يعني الاعتماد على الجدولة

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

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

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

خمس وثمانون دقيقة قد تستهلك نافذة التغيير

بدأ السجل عند 20:43:43Z. جاء التخفيف عند 22:01:57Z، والحل عند 22:09:26Z. استغرق الحادث 85 دقيقة و43 ثانية، وكانت الفترة بين التخفيف والإغلاق نحو ثماني دقائق.

قد يكون الانتظار مزعجاً في فحص عادي لفرع. لكنه قد يستهلك الوقت المسموح في إصدار مجدول أو تجديد شهادة أو استجابة أمنية أو تغيير للبنية. يعتمد الأثر على المهام التي وقعت في 3% أكثر من اعتماده على النسبة العالمية.

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

السبب معروف للمزود وغير منشور

ذكر GitHub أنه حدد السبب قبل التخفيف ووعد بتحليل. لا يصف السجل العام المتاح آلية الخلل. سيكون إرجاعه إلى نقص السعة أو نشر برمجي أو منطقة أو عيب في المجدول تخميناً.

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

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

ربما لم يلاحظ معظم المستخدمين الحادث. قيمته التشغيلية تأتي من المقام المحدود. تحول المشغلات المدارة الخادم إلى خدمة، لكنها لا تحذف طابور التنفيذ من سلسلة البرمجيات؛ تنقل مسؤوليته إلى GitHub.

Sources