محفوظة منذ أكتوبر 2019

بعد الوفاة: ست وعشرون دقيقة من عمليات الدخول الفاشلة، 19 يناير 2026

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

ملخص

في 19 يناير 2026، بين الساعة 14:02 و14:28 UTC، فشلت حوالي ثلثا جميع محاولات تسجيل الدخول إلى اللوحة أو المصادقة عبر واجهة برمجة التطبيقات. كما تم إبطال الجلسات القائمة بشكل عشوائي. أما النسخ قيد التشغيل، وشبكاتها، وحركة المرور الخاصة بها فلم تتأثر طوال الوقت. توقف التزويد لمدة ست وعشرين دقيقة ثم استنزف؛ ولم يُفقد أي طلب.

الجدول الزمني

جميع الأوقات UTC، 19 يناير 2026.

الوقتالحدث
14:02تم تطبيق تغيير مخطط رمز الجلسة على مستوى التحكم. تم وضع علامة على الطرح كتكوين، لذلك ذهب إلى جميع عقد اللوحة الست في وقت واحد.
14:03يرتفع معدل خطأ تسجيل الدخول من ما يقرب من الصفر إلى واحد وستين بالمئة. لدى التنبيه الآلي نافذة مدتها دقيقتان ولا يتم إطلاقه بعد.
14:06يتم إطلاق التنبيه. يتم استدعاء مهندس المناوبة.
14:08أول مستجيب متصل. يرى معدل خطأ، ولا يوجد نشر في سجل تغيير الكود، ويبدأ في النظر إلى قاعدة البيانات.
14:14ينضم مهندس ثانٍ، ويفحص سجل تغيير التكوين بدلاً من سجل الكود، ويجد الإدخال في 14:02.
14:16تم فهم السبب: عقدتان تتحققان من الرموز بالقارئ السابق.
14:19يبدأ الاسترجاع.
14:24يتم إصدار الرموز والتحقق منها بشكل صحيح على جميع العقد الست. ينخفض معدل الخطأ إلى الصفر.
14:28يتم استنزاف وظائف التزويد في قائمة الانتظار. اكتمال الاسترداد.
15:10تم تحديث صفحة الحالة. تأخرت اثنتان وأربعون دقيقة، وهذا فشل بحد ذاته وسيتم معالجته أدناه.

السبب الجذري

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

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

لم يكن خطأً من المهندس الذي طبقه. تم اتباع التصنيف بالضبط كما هو مكتوب.

نطاق الانفجار

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

ما قمنا بتغييره

  1. مرحلة الكناري أصبحت الآن غير مشروطة. أي شيء يُنشر، من أي تصنيف، يذهب إلى عقدة واحدة لمدة خمس دقائق مع حركة مرور اصطناعية قبل أن يذهب إلى أي مكان آخر. تم في 21 يناير.
  2. يقبل القراء التنسيق السابق لمدة ثلاثين يوماً. أصبح التحقق من الرمز الآن مُصَدَّراً بشكل صريح مع نافذة تداخل، لذا فإن التغيير المطروح جزئياً يتدهور إلى لا شيء على الإطلاق. تم في 23 يناير.
  3. يتم تشغيل تسجيل دخول اصطناعي كل خمس عشرة ثانية من خارج شبكتنا، في ثلاث مناطق، ويتم استدعاء الصفحة عند فشلين متتاليين بدلاً من الانتظار بعد نافذة متوسط مدتها دقيقتان. تم في 22 يناير.
  4. تنشر صفحة الحالة تلقائياً عندما يفشل تسجيل الدخول الاصطناعي مرتين، دون انتظار إنسان لكتابة جملة. تتبعها جملة بشرية. تم في 26 يناير.

ما لم نغيّره، ولماذا

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

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

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

الرصيد

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

جاهز عندما تكون

اختر مدينة. اختر الحجم. ادفع بالعملة الرقمية.

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