Discourse توقف عن العمل - هل السبب الحمل على وحدة المعالجة المركزية/الذاكرة العشوائية؟

مرحباً بالجميع.

آمل أن يتمكن أحدكم من مساعدتي في حل مشكلة نواجهها حالياً على منتدانا :-
https://forum.combustionpunks.co.uk
هذه قصة طويلة… لكنني أريد تقديم جميع المعلومات التي قد تساعد في حل المشكلة، لذا أرجو الصبر معي. ستلاحظون خلال هذا أنني لا أملك الكثير من الخبرة في Ubuntu :frowning:

كان كل شيء يعمل بسلاسة تامة لفترة طويلة جداً :smiley: حتى مساء أمس.
نقوم بإعادة هيكلة بسيطة للعلامة التجارية، وتحديث الشعارات وما شابه ذلك، لذا كنت أمس في لوحة الإدارة أقوم برفع الشعارات الجديدة. لاحظت أيضاً أننا متأخرون بضع إصدارات، لذا قمت بتشغيل التحديثات، وكان عليّ تنفيذها يدوياً اتباعاً للتعليمات هنا:-

مثال:
cd /var/discourse
git pull
./launcher rebuild app

بدى أن كل شيء سار على ما يرام، اكتملت التحديثات، وتم رفع الشعارات وعرضها، جربت بعض السمات ثم عدت إلى السمة الأصلية، ثم خرجت لمشاركة اجتماعي متعلق بالمنتدى… نعم، ذهبت إلى الحانة لتناول العشاء مع أصدقائي.

بعد حوالي 30 دقيقة وأنا خارج المنزل، لاحظنا أن المنتدى أصبح غير متصل… ذعر بسيط، ثم لاحظت أن Digital Ocean تواجه مشاكل، فهدأت.

عدت بعد حوالي ساعتين، وتم حل مشاكل Digital Ocean، لكن المنتدى لا يزال غير متصل… لا بأس، قمت بإعادة تشغيل الـ droplet، وعاد كل شيء يعمل بشكل صحيح… بعد حوالي 30 دقيقة أصبح غير متصل مرة أخرى…

ثم فكرت أنه من الأفضل مسح أي تحديثات أخرى معلقة، لذا حاولت تحديث Docker باستخدام الأمر:
wget -qO- https://get.docker.com/ | sh
لم يبدو أن هذا الأمر فعل شيئاً كبيراً.
أعدت بناء التطبيق باستخدام ./launcher rebuild app
لا أعتقد أنه تم التحديث، لأن إعادة بناء التطبيق تظهر الرسالة التالية:
نسخة Docker 17.05.0-ce قديمة، وعند تشغيل أمر docker version يظهر الإصدار 17.05.0-ce

ثم لاحظت أنه قبل أن يصبح المنتدى غير متصل مباشرة، كنا نتلقى رسائل على غرار:-
Out of memory: kill process (convert) or sacrifice child
Out of memory: kill process (ruby) or sacrifice child

شغلت Htop

وجدت العديد من عمليات sidekiq، ووجدت منشوراً حول تقليل عدد الخيوط المعاد تشكيلها في كل مرة - قللت من 80 إلى 2 - لكن المشكلة استمرت.

وجدت عمليات convert تعمل على ملفات JPEG في المسار var/www/discourse/public/uploads/default/original/ (لا أعرف كيفية عرض باقي السلسلة لمعرفة الصور التي تعمل عليها).

استخدام المعالج (CPU) 100% - Ruby var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn -E

حدّثت نظام التشغيل - الآن يعمل Ubuntu 18.04
ما زال Docker على الإصدار 17.05.0-ce.

تم تغيير حجم الـ droplet من 2GB 1vCPU 50GB (10 دولارات) إلى 3GB 1vCPU 50GB (15 دولاراً)
المشكلة مستمرة.

إعادة تشغيل الـ droplet أو إعادة بناء Discourse تعيد المنتدى للعمل لفترة قصيرة (10-30 دقيقة) قبل أن يصبح غير متصل مرة أخرى.

أي مساعدة في هذا الأمر ستكون موضع تقدير كبير، شكرًا مسبقاً لكم.
Matt

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

  ps -ax

أو

 top

لمعرفة العمليات قيد التشغيل. اضغط على q للخروج من أمر top.

شكرًا لك @pfaffman، سأتركه يعمل لفترة أطول قليلاً لأرى ما إذا كان سيتجاوز هذه المشكلة ويستقر الوضع قليلاً.

لقد قمتَ بمرور معظم خطوات استكشاف الأخطاء وإصلاحها التي نوصي بها، عمل جيد. هل يحتوي المنتدى الخاص بك على عدد كبير جدًا من الصور؟

أنصحك بتحديث Docker في نهاية المطاف عندما تتاح لك الفرصة.

وعندما تقوم بذلك، تذكّر بإعادة تشغيل الجهاز بعد ترقية Docker. لا توجد تحذيرات، ولم يعمل Docker بالنسبة لي عندما قمت بالترقية أمس حتى فكرت في إعادة التشغيل.

شكرًا جزيلاً لكم يا أصدقاء.

المشكلة لا تزال مستمرة :frowning: ruby /vazr/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn -E يستهلك 98% من وحدة المعالجة المركزية في الوقت الحالي، والمنتدى غير متاح.

عدد الصور - لا أعرف كيف تصفون الكمية الهائلة - هناك عدد كبير منها، لكننا لسنا منتدى ضخمًا. تظهر الأداة df أن 80% من المساحة البالغة 50 جيجابايت مستخدمة، بينما يعرض لوحة إدارة Discourse أن حجم الرفع هو 5.7 جيجابايت.

لم يبدو أن أمر تحديث docker الذي جربته قد فعل شيئًا. لقد وجدت تعليمات حول كيفية التثبيت على Ubuntu 18، لكن ليس التحديث… هل يجب أن أتبع تعليمات التثبيت؟

قبل إعادة تشغيل الخادم (droplet) هذا الصباح، لم تكن هناك عمليات تحويل ظاهرة، لكن بعد إعادة التشغيل ظهرت الآن 5 عمليات تستهلك حوالي 50% من وحدة المعالجة المركزية والذاكرة العشوائية (RAM). يبدو أن الباقي مستخدم بواسطة Ruby، بينما تستهلك عمليات Sidekiq الموارد بشكل متقطع. لا تزال وحدة المعالجة المركزية والذاكرة العشوائية تصل إلى أقصى سعتها طوال الوقت.

لا تزال عمليات التحويل تتوقف بسبب نفاد الذاكرة.

هل تعتقدون أن هناك طابورًا من المهام قيد التنفيذ؟ هل سيساعد تغيير حجم الخادم (droplet resize) مرة أخرى في إنجاز هذا الطابور؟ لا يزال المنتدى يعمل عبر الإنترنت لمدة تصل إلى 30 دقيقة فقط في كل مرة، وغالبًا ما تكون أقل من ذلك.

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

بعد تغيير الحجم، تأكد من تشغيل discourse-setup لضبط معلمات الذاكرة وإعادة البناء (أو التدمير والبدء من جديد).