يكون تحذير Immich آمنًا للمراقبة عندما يكون محدود النطاق، وتكتمل العملية المتأثرة، ويستمر العمل المفيد، ولا توجد مؤشرات على فشل قاعدة البيانات أو نظام الملفات أو نقطة التحميل أو الذاكرة. أوقف عمليات الكتابة الجديدة عندما يتكرر التحذير نفسه مع عمليات فاشلة، أو اختفاء وحدة التخزين، أو عمليات قتل بسبب نفاد الذاكرة (OOM)، أو أخطاء استرداد قاعدة البيانات، أو تدهور سريع في ضغط الموارد.
كلمة «تحذير» ليست أساس القرار. فقد تظهر رسالة إعادة محاولة غير ضارة ورسالة «لا توجد مساحة متبقية على الجهاز» أثناء استيراد مزدحم، لكنهما تنطويان على مخاطر مختلفة تمامًا. سجّل الطابع الزمني الأول، والعملية الدقيقة، والأصل أو المهمة المتأثرة، وحالة وحدة التخزين والحاويات قبل إعادة تشغيل أي شيء.
صنّف التحذير وفق العملية التي قد يعطّلها
ابدأ بإجراء واحد ملموس للمستخدم: ارفع صورة اختبار، أو افتح أصلًا قديمًا، أو شغّل بحثًا واحدًا، أو راقب المهمة الخلفية التي أنتجت الرسالة. طابق الطابع الزمني للتحذير مع سجلات خادم Immich، وخدمة تعلّم الآلة، وPostgreSQL، والوكيل العكسي، ووحدة التخزين. السؤال هو ما إذا كان التحذير مرتبطًا بطلب ناجح، أو طلب أُعيدت محاولته، أو عملية كتابة فاشلة.
يُعد دليل شدة مستويات السجل نقطة بداية مفيدة: تشير WARN عادةً إلى حالة غير متوقعة قد يظل التطبيق قادرًا على تجاوزها، بينما تشير ERROR إلى عملية فاشلة. ومع ذلك، لا يزال استكشاف أخطاء Immich يتطلب ربط هذا التصنيف بالطلب أو مسار الكتابة أو التبعية المتأثرة قبل تحديد ما إذا كان الاستمرار في الاستخدام آمنًا.
إذا نجح الإجراء نفسه بشكل متكرر وتوقف عدد التحذيرات عن الازدياد، فصنّفه ضمن فرع المراقبة إلى أن تتغير الأدلة. سجّل المعدل والسياق المعتادين حتى تتمكن من معرفة ما إذا كان إصدار مستقبلي أو تغيير في مكتبة أو مشكلة سعة يجعل الرسالة أكثر تكرارًا. لا تكفي رسالة منفردة ومعزولة، من دون تأثير ظاهر على المستخدم، لإعادة بناء الحزمة.
يستخدم إطار قرار ZimaSpace بشأن إصلاح Immich أو إعادة بنائه الحد نفسه: حافظ على الحالة وشخّص الخلل الموضعي قبل استبدال عملية نشر تعمل. يصبح التحذير أكثر أهمية عندما يتجاوز نطاقه عملية واحدة أو يعود بعد إصلاح السبب المطابق.
واصل المراقبة عندما يظل التقدم والحالة سليمين
يتميز التحذير الذي يقتصر على المراقبة بنطاق مستقر. يستمر الطابور في الانخفاض بعد توقف الوصولات الجديدة، وتنجح المحاولات المعادة في النهاية، وتبقى استعلامات قاعدة البيانات طبيعية، وتظل المساحة الحرة أعلى من الحد التشغيلي الأدنى، وتبقى نقاط التحميل موجودة، ولا تتراكم عمليات إعادة تشغيل الحاويات. ينبغي أن يظل سير العمل الظاهر للمستخدم ضمن نطاقي زمن الاستجابة والأخطاء المعتادين.
اختبر هذا الحد بدلًا من افتراضه. كرر الإجراء نفسه خمس مرات، وأدرج أصلًا قديمًا وآخر مرفوعًا حديثًا، وقارن عدد التحذيرات قبل الاختبار وبعده. إذا ظهر التحذير مرة واحدة أثناء تحميل النموذج أو إعادة محاولة عابرة لتبعية، ثم كانت المحاولات التالية سليمة، فوّقه مع الإصدار الدقيق وواصل المراقبة. لا تكتم التحذير أو تصفّيه قبل أن تعرف معناه. فكتم سطر سجل مزعج يزيل خط الأساس لديك وقد يخفي الانتقال من محاولات إعادة غير ضارة إلى عمليات كتابة فاشلة. راقب المدة والمعدل وفشل المهام المرتبط والموارد التي تسميها الرسالة؛ فهذه الأبعاد أكثر فائدة من تصنيفات الشدة وحدها.
أوقف عمليات الكتابة الجديدة عندما يصل التحذير إلى حد يمس سلامة البيانات
أوقف عمليات الرفع والمهام الخلفية عندما تشير التحذيرات إلى نظام ملفات ممتلئ أو للقراءة فقط، أو نقطة تحميل متوقعة مفقودة، أو حالات استرداد أو كتابة متكررة في PostgreSQL، أو عمليات قتل للحاويات بسبب نفاد الذاكرة، أو إعادة تشغيل خدمة بشكل متكرر قبل اكتمال المعاملات. احتفظ بالسجلات ومسارات البيانات الحالية قبل توفير مساحة أو تغيير الملكية.
ليست رسالة «لا توجد مساحة متبقية على الجهاز» المرتبطة بقاعدة البيانات مجرد ضوضاء عادية في السجل. فقد جمعت مناقشة حول فشل Immich بين سلوك زمني معطّل وأخطاء مساحة في PostgreSQL أثناء عملية نشر إشكالية.
لا تثبت الحالة سببًا جذريًا واحدًا ينطبق على الجميع؛ لكنها توضح سبب ضرورة إجراء فحوص فورية لنطاق التخزين قبل قبول المزيد من عمليات الكتابة عند ظهور تحذيرات مرتبطة بقاعدة البيانات والتخزين.
طبّق قاعدة الإيقاف نفسها إذا بدأ المضيف في استخدام التبديل بصورة خارجة عن السيطرة، أو ظهرت ملفات داخل نقطة تحميل فارغة غير متوقعة، أو وصلت عمليات الرفع الجديدة إلى طبقة قابلة للكتابة داخل الحاوية لأن وحدة التخزين المقصودة لم تُحمّل. فقد يؤدي الاستمرار في الكتابة إلى تحويل مشكلة إعداد قابلة للاسترداد إلى مشكلة مطابقة أكبر.
أجرِ إصلاحًا واحدًا قابلًا للعكس وأعد إنتاج المحفّز الأصلي
صحّح السبب المؤكد فقط: استعد نقطة التحميل المقصودة، أو وفّر مساحة حرة آمنة، أو خفّض التزامن لمهمة واحدة، أو أصلح تبعية فاشلة، أو أصلح حدود الأذونات. لا تمسح جميع الطوابير، ولا تحذف ملفات قاعدة البيانات، ولا تحذف وحدات Docker غير المعروفة، ولا تحدّث الإصدارات في الوقت نفسه؛ فهذا يدمر الأدلة اللازمة لتقييم النتيجة.
أعد تشغيل الخدمة المتأثرة فقط عند الحاجة، ثم كرر المحفّز الدقيق الذي أنتج التحذير. يعني النجاح أن ينجح إجراء المستخدم، وأن يتوقف التحذير أو يعود إلى معدله غير الضار الموثق، وأن تُفرّغ الطوابير، وأن تظل وحدة التخزين والذاكرة سليمتين، وألا تؤدي إعادة تشغيل ثانية إلى إعادة إنتاج الفشل. صعّد المشكلة بدل مواصلة التجارب عندما تستمر الرسالة بعد إعادة إنتاج نظيفة، أو تكون سلامة قاعدة البيانات غير مؤكدة، أو تختفي الملفات المطلوبة، أو لا يعيد الإصلاح الآمن الأول التقدم الطبيعي. قدّم إصداري Immich وPostgreSQL الدقيقين، وسجلات مؤرخة زمنيًا، وحالة نظام الملفات، وحالة إعادة تشغيل الحاويات وعمليات القتل بسبب نفاد الذاكرة، وإعادة إنتاج واحدة ومحدودة حتى تستهدف الخطوة التالية الطبقة الفاشلة.
الدعم والنصائح
المزيد للقراءة

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

كيفية منع تكرار المهام أو عمليات الاستيراد في Immich
افصل المهام المتكررة عن الأصول المكررة. استخدم مسارًا أساسيًا واحدًا للإدخال، وتحكّم في عمليات إعادة المحاولة وتغييرات المسارات، ثم اختبر إعادة الإدخال على مجموعة...

كيفية إصلاح Immich بعد امتلاء وحدة تخزين قاعدة البيانات الخاصة به
لا تحذف سجلات WAL الخاصة بـ PostgreSQL لتحرير المساحة مطلقًا. أوقف عمليات الكتابة في Immich، وحافظ على حالة قاعدة البيانات، وأضف سعة تخزين آمنة،...

