تعني أخطاء Immich المتقطعة أثناء استيراد كبير من الهاتف المحمول عادةً أن إحدى الطبقات تفشل تحت ضغط التداخل، وليس أن المكتبة بأكملها أو كل الأصول المرفوعة تالفة.
تجمع عمليات الاستيراد الكبيرة بين سلوك التطبيقات في خلفية الهاتف، والطلبات الطويلة، وحدود الوكيل العكسي أو النفق، وعمليات الكتابة إلى قاعدة البيانات، وإدخال وإخراج التخزين، ومعالجة الصور المصغرة والفيديو، وقوائم انتظار تعلّم الآلة. التقط أولًا مجموعة صغيرة من الأصول الفاشلة والطوابع الزمنية الخاصة بها. ثم حدّد ما إذا كان الفشل يبدأ من الهاتف، أو مسار الشبكة، أو خادم التطبيق، أو إحدى التبعيات المشبعة.
صنّف مجموعة الأخطاء قبل إعادة المحاولة لكل شيء
اجمع حالات الفشل حسب نوع الوسائط، وحجم الملف، والجهاز المصدر، ومسار الشبكة، والوقت. إذا كانت مقاطع الفيديو الكبيرة فقط هي التي تفشل، فتحقّق من مدة الطلب وحدود الرفع قبل فحص وحدة المعالجة المركزية. وإذا فشلت الصور ومقاطع الفيديو عشوائيًا في الفترات المزدحمة نفسها، تصبح موارد الخادم المشتركة أو عدم استقرار الشبكة من الاحتمالات الأقوى.
يُعد تقرير مستخدم لـ Immich في عام 2026 يصف العديد من أخطاء الرفع من الهاتف مفيدًا لأنه يوضح كيف يمكن لتراكم كبير في الهاتف أن يُظهر حالات فشل متكررة تحتاج إلى تشخيص لكل عنصر ولكل مسار. لكنه لا يثبت وجود خطأ شامل واحد في عميل الهاتف.
لا تحدد خيار «إعادة المحاولة للجميع» بوصفه الإجراء التشخيصي الأول. احفظ أسماء أو معرّفات عشرة أصول فاشلة، وعنصرًا ناجحًا للمقارنة، ونافذة السجلات المقابلة للعميل والخادم. تتيح لك مجموعة صغيرة معروفة اختبار التغييرات دون إنشاء موجة جديدة تخفي الأدلة الأصلية.
قارن عمليات الرفع المحلية بالمسار البعيد المعتاد
ارفع الملفات الاختبارية الصغيرة والكبيرة نفسها عبر شبكة Wi‑Fi محلية مستقرة مباشرةً إلى نقطة النهاية المحلية الموثوقة، ثم كرر العملية عبر اسم المضيف البعيد المعتاد أو شبكة VPN أو النفق أو الوكيل العكسي. أبقِ الحساب والأصل دون تغيير حتى يكون المسار هو المتغير الرئيسي.
يسلّط تقرير عن فشل النسخ الاحتياطي للملفات الكبيرة الضوء على سبب إدراج حدود طلبات الوكيل أو النفق ضمن هذا المسار التشخيصي. فالخدمة والحدود المذكورة في التقرير خاصة بعملية النشر؛ أما الاختبار العام فهو التحقق مما إذا كان النقل المحلي المباشر ينجح بينما يفشل المسار البعيد باستمرار.
إذا فشل المساران مع الأصول نفسها، فاتبع أدلة الخادم والتخزين. وإذا فشل المسار البعيد فقط، فتحقّق من الحد الأقصى لحجم جسم الطلب، وتخزين الطلبات مؤقتًا، والمهلات الزمنية للخمول والقراءة، وإنهاء TLS، وانتقالات شبكة الهاتف، وإعادة الإرسال. لن يؤدي تغيير التزامن الخاص بالصور المصغرة إلى إصلاح طلب لم يصل إلى Immich كاملًا.
اربط الأخطاء بتراكم قوائم الانتظار وضغط الموارد
قد تستمر عمليات الاستيراد الكبيرة في قبول عمليات الرفع بينما تتراكم المهام في الخلفية. راقب وحدة المعالجة المركزية، وضغط الذاكرة، وزمن استجابة إدخال وإخراج الكتل، واستجابة قاعدة البيانات، وإعادة تشغيل الحاويات، واكتمال المهام أثناء نافذة الفشل. لا يكفي ارتفاع الاستخدام وحده لإثبات السبب؛ يجب أن يتغير المقياس في الوقت نفسه الذي تظهر فيه الأخطاء.
يوضح مقال Docker حول مراقبة مقاييس وحدة المعالجة المركزية والذاكرة والشبكة والقرص في الحاويات أهمية مقارنة الحاويات بدلًا من قراءة متوسط واحد على مستوى المضيف. في Linux، اجمع بين مقاييس الحاويات وأدلة التخزين وضغط الذاكرة على المضيف للطوابع الزمنية نفسها.
إذا تسبب ضغط الذاكرة في خروج الحاويات، أو ارتفع زمن استجابة التخزين بالتزامن مع أخطاء الرفع، أو قفز زمن استجابة قاعدة البيانات بينما توقفت قائمة الانتظار عن التقدم، فخفّض حمل العمل أو التزامن المسؤول فقط، ثم أعد اختبار المجموعة الثابتة. وإذا ظلت مخططات الموارد مستقرة، فتابع فحص سجلات التطبيق وتشخيص مسار الشبكة.
تعامل مع معدل الأخطاء وزمن الاستجابة في الحالات الطرفية بوصفهما إشارتين للحمل
قد يبدو النظام سليمًا وفق متوسط زمن الاستجابة، بينما تنتهي نسبة صغيرة من الطلبات بمهلة زمنية أثناء الذروة. سجّل عدد عمليات الرفع التي جرت محاولتها، وعدد حالات الفشل، ووسيط زمن الاستجابة، والطلبات الأبطأ في الحالات الطرفية خلال نافذة مضبوطة. يجعل ذلك كلمة «متقطع» قابلة للقياس بدل أن تكون مجرد انطباع.
يوصي إطار اختبار الحمل في تحليل الأخطاء وزمن الاستجابة بتحليل فئات الحالات، ومشكلات الاتصال، والتوزيعات، والارتباطات الزمنية. لا تحتاج إلى إرهاق مكتبة العائلة بقوة؛ استخدم البنية التحليلية نفسها مع معدل الاستيراد الفعلي.
إذا أدى خفض معدل الوصول بشكل كبير إلى تقليل حالات الفشل بينما نجح كل أصل على حدة، فإن المكدس الحالي يفتقر إلى هامش كافٍ لشدة الاستيراد هذه. أما إذا فشلت الملفات نفسها حتى عند معالجتها واحدًا تلو الآخر، فالمشكلة خاصة بالأصل أو بالمسار أو خطأ برمجي حتمي، وليست مجرد تشبع عام.
خفّف مصدر ضغط واحدًا وأعد اختبار نمط الاستيراد نفسه
اختر التغيير الأكثر أمانًا وفقًا للأدلة: خفّض تزامن إحدى المهام في الخلفية، أو أوقف مؤقتًا حاوية أخرى تستهلك موارد كبيرة، أو استخدم المسار المحلي، أو انقل عملية الاستيراد إلى خارج فترة النسخ الاحتياطي، أو صحّح مهلة الوكيل. لا تغيّر حدود وحدة المعالجة المركزية وقواعد التخزين والوكيل وإصدارات التطبيق في الوقت نفسه.
يوفر سير عمل ZimaSpace الخاص بـ انقطاعات النسخ الاحتياطي لصور الهاتف المسار المتعلق بالهاتف: فقد يؤدي الجدولة في الخلفية، والأصول الأصلية المتاحة عبر السحابة فقط، وتغير ظروف الشبكة إلى مقاطعة عمليات الرفع حتى عندما يكون الخادم سليمًا.
اعتبر الاختبار ناجحًا عندما تنجح المجموعة الثابتة، وتعمل عملية الاستيراد الأكبر نفسها بمعدل أخطاء مستقر، وقوائم انتظار تتقدم، وأداء تفاعلي مقبول. صعّد المشكلة عندما تستمر حالات الفشل عند حمل منخفض أو تتكرر مع الأصول نفسها؛ وأرفق سجلات العميل، وسجلات الخادم، وحالة الوكيل، ومخططات الموارد، ونوع الملف وحجمه، وأول طلب فاشل.
الدعم والنصائح
المزيد للقراءة

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

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

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

