لدينا مشكلة مع Sidekiq الذي يعمل على حاويات متعددة.
السيناريو 1:
في بيئة التطوير، لدينا نسخة طبق الأصل واحدة مما يعني تشغيل حاوية واحدة. لا توجد لدينا أي مشكلة هنا.
للعلم،
تم التحقق: forum_url/sidekiq/busy (1 عملية قيد التشغيل)
السيناريو 2:
في بيئات ما قبل الإنتاج والإنتاج، لدينا أكثر من نسخة طبق الأصل واحدة (أكثر من حاوية واحدة قيد التشغيل). نواجه مشكلة تزامن Sidekiq (الوظيفة قيد التشغيل ولكنها تتخطى تنفيذ التعليمات البرمجية).
للعلم،
تم التحقق: forum_url/sidekiq/busy (أكثر من عملية واحدة قيد التشغيل). لكل حاوية عملية Sidekiq واحدة قيد التشغيل.
صححني،
هل من المقبول تشغيل أكثر من عملية Sidekiq واحدة؟
إذا لم يكن مقبولاً، فكيف يمكن إصلاح مشكلة تزامن الوظيفة؟
للعلم، نحن نستخدم Discourse Docker
ما هي الخطوات المناسبة التي يجب أن أتبعها. شكراً مقدماً.
ماذا تقصد بالضبط بـ “مشكلة التزامن”؟ هل يمكنك التوضيح؟ ما الذي يحدث بترتيب خاطئ بالضبط؟
لا يضمن إلحاق مهمة sidekiq بقائمة انتظار الترتيب العام للتنفيذ حيث توجد قوائم انتظار مختلفة ذات أولوية مختلفة، لذلك يمكن لبعض المهام أن تتقدم على غيرها.
أيضًا “تخطي تنفيذ الكود”. هل يمكنك التوضيح؟ أي كود؟ عندما تعمل مهمة، لن يتم تخطي الكود. هل قمت بفحص /logs الخاصة بك للتأكد من عدم وجود أي شيء معطل؟
وكن على علم بأنك قد تقوم بتشغيل تثبيت غير مدعوم قد يكون هو السبب الجذري لمشاكلك…
4 إعجابات
مرحباً @merefield شكراً على الرد
ماذا تقصد بالضبط بـ “مشكلة تزامن”؟ هل يمكنك التوضيح؟ ما الذي يحدث خارج الترتيب بالضبط؟
كما ذكرت أعلاه، في بيئة ما قبل الإنتاج والإنتاج، تعمل أكثر من عملية sidekiq.
لست متأكداً! قد يربك الأمر عند تشغيله أي عملية يجب أن يأخذها بسبب عملية العامل المتعدد.
أيضاً “تخطي تنفيذ الكود”. هل يمكنك التوضيح؟ أي كود؟ عندما تعمل مهمة، لن يتم تخطي الكود. هل تحققت من /logs الخاصة بك للتأكد من عدم وجود أي شيء معطل؟
نقوم بتشغيل بعض مهام sidekiq المخصصة التي تصدر بعض الإحصائيات المخصصة في ملف CSV. المهمة تعمل بشكل دوري. في بعض الأحيان لا يحدث تصدير الملف. المهمة تعمل بدون أي رسالة خطأ.
على سبيل المثال:
لغرض الاختبار، إذا نقرت على زر التشغيل هذا، تعمل المهمة ولكن تصدير الملف لا يحدث في بعض الأحيان.
للعلم، في بيئة التطوير، نفس الكود يعمل ولكنها عملية عامل sidekiq واحدة فقط. هنا تعمل بشكل جيد. أتساءل ما إذا كانت المشكلة بسبب تشغيل أكثر من عملية عامل sidekiq واحدة على الإنتاج/ما قبل الإنتاج.
هل تحققت من /logs الخاصة بك للتأكد من عدم وجود أي شيء معطل؟
نعم، لم نحصل على أي خطأ متعلق بالمهمة.
وكن على علم بأنك قد تقوم بتشغيل تثبيت غير مدعوم
نحن نقوم بتشغيل أحدث إصدار من discourse.
شكراً
عليك أن تتوقع التزامن. إنه نظام دفعات متعدد الخيوط.
وهذا ينطبق على بعض الأشخاص على Kubernetes ولكن هذا غير مدعوم هنا.
أعتقد أنه سيتعين عليك إضافة بعض التسجيل إلى مهمتك لمعرفة ما يحدث.
هذا هو الكود المخصص الخاص بك، أليس كذلك؟
لقد أضفنا بالفعل التسجيل في الكود المخصص الخاص بنا. لا توجد مشكلة في الكود الخاص بنا.
نعم
نعم، نحن نستخدم مجموعة Kubernetes.
سؤال واحد فقط!
هل يجب أن تعمل عملية sidekiq واحدة فقط؟ أم أن تشغيل أكثر من عملية sidekiq أمر جيد؟
مثل أي نظام دفعات لائق، تم تصميمه لتشغيل أكثر من مهمة واحدة في وقت واحد، وإلا فلن يتوسع.
تأكد من أخذ ذلك في الاعتبار عند تصميم مهامك.