دراسة حالة 07
تشخيص الأعطال وهندسة الأداء

الملخص المرئي بالإنجليزية؛ والنص الكامل بالعربية أدناه.
منهجيتي
- إعادة إنتاج المشكلة: التقاط رسالة الخطأ (Traceback) كما هي.
- القياس: الاستعلام عن البيانات الحقيقية بـ SQL.
- العزل: تحديد ما إذا كان السبب في الكود أم البيانات أم الإعدادات.
- الإصلاح: أصغر تعديل صحيح ممكن.
- الحماية: إضافة اختبار يمنع عودة المشكلة.
الحالات
| العَرَض | الدليل والسبب الجذري | الإصلاح | تم التحقق |
|---|---|---|---|
| تعطّل لوحة متابعة المناديب بخطأ RPC | بدت المشكلة في البيانات، لكن فحص SQL أعاد صفر سجلات خاطئة. السبب الحقيقي نطاق بحث child_of [0] عندما لا يكون للمندوب موقع عهدة. | تأمين نطاق البحث في الكود | نعم |
| نحو 500 مخالفة تأخير خاطئة في الموارد البشرية | منطق الجزاءات تجاهل الورديات المقسّمة | احتساب يراعي الورديات (إصدار جديد من الموديول) | نعم |
| خطأ RPC بعد إعادة نشر كود أقدم | فلتر محفوظ يشير إلى حقل لم يعد موجوداً في الكود الأقدم | استعادة الحقل وإعادة الاختبار على قاعدة بيانات مؤقتة | نعم |
| تعطّل شاشة اختيار قاعدة البيانات في بيئة جديدة | نسخة منقوصة من الموديولات في addons_path تحجب الموديولات الأساسية | تصحيح مسار الموديولات | نعم |
| تعذّر حفظ عقود عشرات الموظفين | بيانات قسائم رواتب قديمة من إصدار رئيسي سابق | إصلاح في البيانات والكود | نعم |
| تجاوز الحدود القصوى وصرف العمولة مرتين عند الطلبات المتزامنة | تمت إعادة إنتاجها بـ أداة اختبار تزامن مخصصة | أقفال + اختبارات انحدار (Regression Tests) | نعم |
| فشل استعادة قاعدة بيانات عند جدول التمثيلات المتجهية | امتداد المتجهات غير مثبّت في PostgreSQL | تثبيت الامتداد وتنفيذ CREATE EXTENSION | بانتظار التأكيد |
درس أطبّقه الآن
في أحد تشغيلات الاختبار، طابق فلتر قاعدة البيانات بيئة الإنتاج أيضاً، فكُتبت بضعة سجلات مؤقتة فيها. وثّقت الحادثة واعتمدت قاعدة: يجب أن تستخدم تشغيلات الاختبار فلتراً دقيقاً لا يطابق أي قاعدة إنتاج.
ما لا ندّعيه
لا يوجد لديّ دليل على حوادث نفاد ذاكرة (OOM) أو أخطاء 502/504، لذا لم نصف أياً منها. ضبط الـ Workers والذاكرة موجود في ملاحظات الإعداد فقط.