Sidekiq، باستخدام elasticache، توقف معالجة المهام المعلقة منذ ترقية discourse

لقد قمت مؤخرًا بترقية مثيل Docker الخاص بـ Discourse الذي يعمل على EC2 في Ubuntu. استخدمت أمر launcher rebuild للترقية. كان لدي سابقًا الإصدار 2.4.0 وقمت بالترقية إلى 2.6.0.beta1 (ثم قمت بالترقية مرة أخرى إلى 2.6.0.beta2). أنا أستخدم Elasticache بدلاً من Redis، وكان يعمل دون مشاكل قبل الترقية. مباشرة بعد الترقية، لاحظت أن Sidekiq لم يكن يرسل رسائل البريد الإلكتروني. قمت بإعادة تشغيل التطبيق ومسح الذاكرة المؤقتة، وبدا وكأنه يعمل، لكن ذلك كان نتيجة إيجابية كاذبة.

مؤشرات الخلل الملاحظة

  • يقوم Sidekiq بجدولة وتنسيق المهام بوتيرة ثابتة ومعقولة (كما يُظهر لوحة تحكم Sidekiq)، لكنه لا ينفذ أي منها.
  • صفحة الإدارة تشكو من عدم تشغيل Sidekiq.
  • تُظهر السجلات عدة حالات لرسالة “فشل اختبار نبض Sidekiq، جاري إعادة التشغيل”.
  • بطبيعة الحال: لا تصل رسائل البريد الإلكتروني إلى المستخدمين.

الأشياء التي جربتها (بعد قراءة المنشورات هنا ومن Stack Overflow)

  • إرسال رسالة بريد إلكتروني تجريبية بنجاح باستخدام أداة discourse-doctor للتحقق من أن جزءًا من التدفق يعمل.
  • التحقق من لوحة تحكم Sidekiq للتأكد من أن التذييل يعرض مثيل Elasticache الصحيح .
  • التحقق من أن سجلات Docker لا تشير إلى أي خطأ (ok: run: redis: (pid XX) 0s).
  • مسح الذاكرة المؤقتة وإعادة تشغيل Discourse (./launcher restart app).
  • إيقاف التطبيق، ومسح الذاكرة المؤقتة، ثم تشغيل التطبيق مرة أخرى.
  • إعادة بناء التطبيق مرة أخرى.

الخطوات التي لم أجربها

  • إنشاء مثيل جديد لـ Elasticache.
  • إيقاف هذا التثبيت وإنشاء تثبيت نظيف جديد.

هل واجه أي شخص هذه المشكلة ولديه أي اقتراحات؟
هل هناك أي سجلات قد فاتني؟
هل هناك طريقة يمكنني من خلالها إجبار Sidekiq على معالجة مهامه؟

في مرحلة ما، بدأ discourse يتطلب الإصدار 5 من Redis. أعتقد، ما هو إصدار Redis الذي تدعمه خدمة ElastiCache الخاصة بك؟ ظننت أن هناك رسالة واضحة في السجلات، لكن قد أكون مخطئًا.

سأتحقق من موقعي الذي يستخدم ElastiCache للتأكد من عدم وجود مشاكل. أنا متأكد إلى حد كبير من أن هذا الموقع يستخدم ElastiCache.

هذه معلومات مفيدة، شكراً لك. أنا أعمل على الإصدار 3 من Redis، لذا يبدو أنني سأقوم بتحديث الليلة.

اعتقدت أن هناك رسالة واضحة في السجلات

من الممكن جداً أنني لا أنظر إلى السجلات الصحيحة. فكل من /logs و ./launcher logs app لا يقدمان أي مؤشر على ذلك، لذا ربما هناك مكان آخر يجب أن أبحث فيه؟

/var/discourse/shared/logs/rails/production.log

لو كانت ذاكرتي وأصابعي تعملان بشكل صحيح.

قريب جدًا. لقد وجدته في:

/var/discourse/shared/web-only/log/rails/production.log

رسالة واضحة جدًا بمجرد أن عثرت عليها :+1:t2::

أنت تتصل بـ Redis v3.2.10، بينما Sidekiq يتطلب Redis v4.0.0 أو أحدث

قمت بترقية Redis إلى الإصدار 5 وتمت معالجة قائمة الانتظار المتراكمة. كل شيء على ما يرام الآن! شكرًا لك!