حسّن الوصول إلى قاعدة بيانات Jellyfin للحاويات المتزامنة، وذلك بالتأكد أولًا من وجود مالك واحد لقاعدة البيانات، ثم قياس فترات انتظار الأقفال، ودفعات الكتابة، وزمن استجابة التخزين، وتداخل أعباء العمل.
هل تفتح عدة حاويات قاعدة بيانات Jellyfin نفسها، أم أن حاوية Jellyfin واحدة بطيئة أثناء عمليات الفحص ونشاط المستخدمين؟ لا تزد عدد الاتصالات بشكل عشوائي. حدّد نوع قاعدة البيانات، والجهات النشطة التي تكتب إليها، وموقع نقطة التحميل، وطريقة النسخ الاحتياطي، والعملية الدقيقة التي تنتظر قبل تغيير الواجهة الخلفية أو التجميعة.
أثبت ما إذا كان القفل أو التخزين هو العامل المحدِّد
سجّل رسائل انشغال قاعدة البيانات أو قفلها، ومدة المعاملات، وزمن استجابة الإدخال والإخراج، وانتظار وحدة المعالجة المركزية، والمهام المتزامنة التي تعمل في الوقت نفسه. تسمح SQLite بالقراءات المتزامنة، لكنها تجعل عمليات الكتابة متسلسلة، لذلك قد يحوّل تعدد عمليات الكتابة تحديثًا قصيرًا للبيانات الوصفية إلى طابور (سلوك قفل SQLite).
انقل قاعدة البيانات إلى تخزين محلي سريع كاختبار مضبوط فقط. إذا استمر انتظار الأقفال بينما انخفض زمن استجابة التخزين، فالمشكلة هي تداخل عمليات الكتابة أو تصميم قاعدة البيانات، وليست القرص وحده.
قارن بين فترات انتظار الأقفال وزمن استجابة التخزين أثناء الفحص نفسه. إذا كانت قاعدة البيانات سريعة لكن عمليات الكتابة تنتظر، فإن الجدولة والملكية—وليس اتصالًا إضافيًا—هما الإجراء التالي للتحكم.
حدّد مالك قاعدة البيانات وجدول عمليات الكتابة
يجب ألا يملك مثيل Jellyfin واحدًا قاعدة بيانات تطبيق معينة إلا إذا كانت الواجهة الخلفية المدعومة والنشر يوفّران صراحةً تنسيقًا بين مثيلات متعددة. امنع عمليات الفحص، وتحديث البيانات الوصفية، والاستيراد، والنسخ الاحتياطي، والصيانة من البدء في الوقت نفسه. استخدم هوية حاوية واحدة ومسارًا دائمًا واحدًا حتى لا تؤدي إعادة التشغيل إلى إنشاء قاعدة بيانات ثانية.
تحقّق من ذلك بتشغيل فحص واحد، ثم عبء عمل مستخدم واحد، ثم المزيج المعتاد من العمليات المتزامنة. قارن فترات انتظار الأقفال ووقت الإكمال بعد إضافة كل جهة كتابة إضافية.
أجرِ الاختبار باستخدام جهة كتابة واحدة، ثم أضف عبء عمل الحاويات المتزامن المعتاد. يوضّح ذلك ما إذا كانت كل جهة كتابة إضافية تزيد زمن الانتظار في الطابور أو تضيف قراءات غير ضارة فحسب.
اعرف متى يكون استخدام واجهة خلفية مختلفة مبررًا
قد تستحق واجهة خلفية أكبر مثل PostgreSQL التقييم عندما يتطلب عبء العمل فعلًا عدة جهات كتابة للتطبيق، أو نشاطًا متزامنًا أكبر، أو أدوات تشغيلية لا تستطيع SQLite توفيرها. لكنها تضيف أيضًا عمليات ترحيل، وبيانات اعتماد، ونسخًا احتياطية، واحتمال فشل الشبكة، وخدمة أخرى يجب استعادتها. تشير إحدى مناقشات المشروع إلى أن التزامن على مستوى الاستخدام التجاري خارج النطاق المعتاد لخوادم Jellyfin المنزلية، لذلك لا تستورد افتراضات اتصالات المؤسسات إلى نشر منزلي (مناقشة التزامن المحدد النطاق).
إذا اختُبر تغيير الواجهة الخلفية، فاحتفظ بقاعدة البيانات الأصلية وتعريف النشر متاحين حتى يمكن التراجع عن المقارنة دون تغيير حالة التطبيق.
قارن بين فترات انتظار الأقفال وزمن استجابة التخزين أثناء الفحص نفسه. إذا كانت قاعدة البيانات سريعة لكن عمليات الكتابة تنتظر، فإن الجدولة والملكية—وليس اتصالًا إضافيًا—هما الإجراء التالي للتحكم.
تحقّق من الإعداد المختار
أعد تشغيل كل حاوية، وشغّل عبء العمل المتزامن الأصلي، وتأكد من بقاء فترات انتظار الأقفال، وزمن الاستجابة، وإجراءات المستخدمين، والنسخ الاحتياطية ضمن الحدود المقبولة. أوقف الضبط عندما تنجز قاعدة البيانات عبء العمل بمالك واحد واضح ومسار استعادة مُختبر. صعّد المشكلة عند استمرار التلف، أو حالات فشل القفل المتكررة، أو عمليات الكتابة غير المدعومة من مثيلات متعددة بعد فحوص الجدولة والتخزين القابلة للعكس.
أجرِ الاختبار باستخدام جهة كتابة واحدة، ثم أضف عبء عمل الحاويات المتزامن المعتاد. يوضّح ذلك ما إذا كانت كل جهة كتابة إضافية تزيد زمن الانتظار في الطابور أو تضيف قراءات غير ضارة فحسب.
إذا اختُبر تغيير الواجهة الخلفية، فاحتفظ بقاعدة البيانات الأصلية وتعريف النشر متاحين حتى يمكن التراجع عن المقارنة دون تغيير حالة التطبيق.
الدعم والنصائح
المزيد للقراءة

كيفية منع تكرار المهام أو عمليات الاستيراد في Jellyfin
ينشأ العمل المكرر عادةً بسبب تداخل أدوات الجدولة أو وجود أكثر من جهة كتابة؛ عيّن مسؤولًا واحدًا، ومسارًا واحدًا، وفحصًا واحدًا لاكتمال العمل.

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

لماذا يعيد Jellyfin إنشاء الملفات المفقودة بمالكٍ غير صحيح؟
عادةً ما ينشأ خطأ الملكية من عدم تطابق الهوية أو استخدام مسار استيراد مختلف؛ تحقّق من مستخدم الحاوية النشط قبل تغيير الأذونات.

