مسح كل البيانات في Redis

أشارك هذه المعلومة في حال كانت مفيدة لأي شخص آخر يرى كلمة “جاري التحديث” في لوحة الإدارة رغم عدم وجود تحديث فعلي جارٍ، ويبدو المنتدى سليمًا من الناحية الأخرى.

رغم أن هذه المشكلة لم تؤثر أبدًا على تحديثات مدير Docker، فقد اضطررت في الإصدارات القليلة الماضية إلى إجراء التحديثات عبر سطر الأوامر (CLI) لأن لوحة الإدارة كانت تشير دائمًا إلى أن Discourse قيد التحديث.

منتداي صغير ولا يحتوي على إضافات مخصصة.

كان حل المشكلة هو تفريغ ذاكرة التخزين المؤقت لـ Redis.

لا يمكنني الكشف عن السبب الجذري، لكن كان الأمر محبطًا للغاية أن أصل إلى حد معرفتي وفهمي لعملية تحديث Discourse (هذا ليس شكوى، بل اعتراف).

حتى الآن، كانت إعادة بناء التطبيق (rebuild app) دائمًا الحل الموثوق تقريبًا لأي مشكلة.

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

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

هل يمكن إعادة تشغيل Redis بدلاً من ذلك؟ أعتقد أنه قاعدة بيانات في الذاكرة، لذا لن يتم الاحتفاظ بأي شيء بعد إعادة تشغيل الخادم، على سبيل المثال. كما أن إعادة تشغيل الخادم ليست مدمرة (وقد تحدث في أي وقت).

هذا غير صحيح. حيث يقوم Redis بالاحتفاظ بالبيانات على القرص.

أقدر رؤيتك وخبرتك.

الأشياء التي جربتها:

التحديث من لوحة المسؤول (فشل/لم يبدأ أبدًا)

اتبعت خطوات التحديث اليدوي لـ Discourse (خلال الإصدارات الثلاثة الماضية)

أعدت بناء تطبيق المشغل عدة مرات.

بحثت في المنتدى عن مشكلة وحل مشابهين.

في النهاية لجأت إلى استعلام في ChatGPT الذي كشف عن خيارات Redis، رغم أن ChatGPT نفسه قال إن الإصلاح غير مرجح (واقترح الأشياء التي جربتها بالفعل).

كان هذا هو الإجراء الوحيد الذي اتخذته والذي حل المشكلة.

أتفهم التشبيه.

ما الذي كان يمكنني فعله غير ذلك لفهم المشكلة وحلها بشكل أفضل كبديل؟

للتوضيح، هل وجدت أن الأمر التالي لم يعمل معك؟

cd /var/discourse
git pull
./launcher rebuild app

(بأي طريقة لم يعمل؟ هل هذه تثبيت قياسي؟)

لم يتم تنفيذ أمر git pull، ولكن تم إعادة بناء تطبيق لوحة التشغيل.

عملت هذه العملية بنجاح، لكن لم يتم توضيح أن لوحة الإدارة كانت تعتقد أن تحديثًا قيد التنفيذ.

شكرًا - إذن الملاحظة هي أن تحديث لوحة الإدارة لا يعمل بالنسبة لك. أيضًا، لم يكن يعمل بالنسبة لي منذ فترة! سيكون من الأفضل لو عمل.

أفضّل التحديث عبر سطر الأوامر، لكنني قمت للتو بتحديث Docker و Discourse من الواجهة الرسومية على هاتفي iPhone 15، وقد سارت الأمور بشكل جيد هذه المرة (تثبيت قياسي على DigitalOcean).

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

ما الذي يعيده الأمر free -h؟

ما هي القيمة المحددة لـ UNICORN_WORKERS في ملف app.yml؟

ما هي القيمة المحددة لـ db_shared_buffers في ملف app.yml؟

هل تم تعليق db_work_mem في ملف app.yml؟

كم عدد وحدات المعالجة المركزية (vCPU) التي يمتلكها خادمك؟

مجاني -h يُظهر 3.8 جيجابايت من الذاكرة، 1.7 جيجابايت مستخدمة، 134 ميجابايت حرة، 1.0 جيجابايت مشتركة، buff/cache 2.0 جيجابايت متاح 788 ميجابايت

تبديل 2.0 جيجابايت، 290 ميجابايت مستخدمة 1.7 جيجابايت حرة

UNICORN_WORKERS : 4

db_shared_buffers 1 جيجابايت

تم التعليق على db_work_mem، مضبوطة على 40 ميجابايت

أعمل على مثانة ذات 2 معالج و4 جيجابايت من الذاكرة.

شكرًا على أسئلتكم! :smiley: