ضبط خادم Discourse للأداء

هل توجد أدلة (أو مواضيع هنا في المنتدى) تقدم نصائح حول تحسين أداء خادم يستضيف مواقع Discourse؟

شغّلت الأمر ./Discourse-set وقام بتعيين ربع الذاكرة (إلى 4096 ميجابايت) وإضافة 8 من عمال Unicorns. لكن هل هناك أي شيء آخر يمكننا فعله، أو هل يمكن تعديل هذه الإعدادات؟

يحتوي الخادم على 64 جيجابايت من ذاكرة ECC وقرصين صلبين من نوع NVMe سعة كل منهما 512 جيجابايت (في مصفوفة RAID). عند فحص الأمر top، يُلاحظ استخدام حوالي 5 جيجابايت فقط من الذاكرة، مع وجود 57392484 avail Mem. يعمل الخادم أيضًا على مواقع أخرى غير Docker، لكنها لا تستهلك سوى قدر ضئيل من الموارد، وقد تم ضبط MySQL بالفعل لقاعدة بيانات كبيرة سعتها 2 جيجابايت. تتراوح متوسطات الحمل عادةً تحت 1.0 (غالبًا بين 0.50 و1.0، مع تجاوز ذلك أحيانًا). لم يتم الإبلاغ عن أي مشاكل، لكنني أأمل في الاستفادة من قدرات الخادم بأقصى درجة ممكنة.

أتساءل عما إذا كان يجب أن أبدأ بمضاعفة db_shared_buffers… وماذا عن #db_work_mem: "40MB" الذي يكون معطلًا حاليًا (مُعلَّقًا).

كل المعلومات والنصائح موضع ترحيب :smiley:

3 إعجابات

لقد كنت أبحث أيضًا في المنتديات عن هذا.

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

إعجاب واحد (1)

شكرًا لك! لا توجد مشاكل حتى الآن. لاحظت فقط استخدامًا عاليًا للذاكرة ولكن ليس منتدى مزدحمًا. أنا معتاد على التفكير بشكل استباقي والتحقق من الموارد الأكثر استخدامًا. هذا فقط على خادم افتراضي خاص (VPS) بسعة 3 جيجابايت و 6 أنوية بسرعة 3.5 جيجاهرتز. ليس بطيئًا، بل سريع جدًا، ولكني أرى أن استخدام الذاكرة قد يصبح مشكلة في المستقبل وأنا فضولي بشأن ما يمكنني تعديله.

سأقوم بقراءة المزيد عن تطبيقات Ruby on Rails العامة وتحسينها. شكرًا مرة أخرى.

إعجاب واحد (1)

اعتمادًا على مقياس “الاستخدام” الذي تقصده، قد يكون ذلك طبيعيًا. ولكن مع 3 جيجابايت، ربما لا يكون هناك الكثير من الضبط للقيام به، كما لو كنت قد شغلت ./discourse-setup فإن تخميناته جيدة بما فيه الكفاية على الأرجح.

إعجاب واحد (1)
free -h
              total        used        free      shared  buff/cache   available
Mem:          2.9Gi       1.8Gi       167Mi       100Mi       1.0Gi       895Mi
Swap:         1.0Gi       587Mi       436Mi

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

في هذا المستوى، الشيء الوحيد الحقيقي الذي يمكنك فعله هو إضافة المزيد من ذاكرة الوصول العشوائي (RAM). إذا كان لديك 8 أو 16 جيجابايت، فهناك بعض الأشياء التي يمكنك القيام بها. على أي حال، قد ترغب في إضافة جيجابايت أخرى من التبديل (swap)، ولكنك على الأرجح ستكون بخير.

إذا قمت بتشغيل ./discourse-setup، فسيؤدي ذلك إلى إنشاء ملف تبديل (swapfile) بحجم 2 جيجابايت. قد تواجه مشكلات عند إجراء إعادة بناء.

حسنًا، تمكنت من مضاعفة استخدام الذاكرة المتاحة تقريبًا عن طريق تغيير الإعداد الافتراضي للتثبيت من:
UNICORN_WORKERS: 8
إلى
UNICORN_WORKERS: 4

ثم: sudo ./launcher rebuild app

أنا الآن أقوم بإعداد مراقبة PostgreSQL وسأرى ما يجري هناك.

هناك دائمًا نقطة زمنية يصبح فيها مورد ما عنق زجاجة. لكن خادمك يبدو حاليًا مفرطًا في الأبعاد بالنسبة لي.

ستستخدم المزيد من الذاكرة عندما يكون لديك المزيد من عمليات Unicorn.
ستحتاج إلى المزيد من عمليات Unicorn عندما يكون لديك المزيد من حركة المرور على موقعك.

أرى أن جميع عمليات Unicorn تستخدم 0.0٪ من وحدة المعالجة المركزية ويبدو أن worker[0] هو الوحيد الذي يقوم بشيء ما بالفعل.

لقد قللت الذاكرة عن طريق تشغيل عدد أقل من Unicorns. هذا جيد، لأنك لم تكن تستخدمها على ما يبدو على أي حال. لكن الذاكرة المتاحة هي في الواقع شيء سيء. أنت تحسن لمتغير خاطئ.

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

**) إعادة بناء Discourse سيستهلك المزيد من الذاكرة لذلك تحتاج إلى التحقق من مقدار الذاكرة المتاحة * أثناء إعادة البناء. في الممارسة العملية، لا تقل عن 2 جيجابايت الإجمالية و/أو تأكد من أن لديك مساحة مبادلة كافية كما قال Pfaffman بالفعل. *

إعجاب واحد (1)

غير صحيح. الذاكرة “الحرة” التي لا تفعل شيئًا هي سيئة. لكن الذاكرة “المتاحة” هي الذاكرة التي يستخدمها النظام والتي يمكن تحريرها بسهولة هي شيء جيد. :slight_smile:

أو رسميًا:

الذاكرة المتاحة: تقدير لمقدار الذاكرة المتاحة لبدء تطبيقات جديدة، دون الحاجة إلى التبديل.

المصدر: man free

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

… نعم، أفضل تحرير الذاكرة إذا لم تكن قيد الاستخدام حتى يتطلب المرور أي تغييرات.

شكراً مرة أخرى.

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

وإذا لم يكن لديك الكثير من المال لإهداره، فمن الغباء دفع الكثير (تعبير إعلاني فنلندي، لا إساءة :rofl: )

إعجاب واحد (1)

نعم بالضبط، فيما يتعلق بالذاكرة المتاحة. ومع ذلك، فإن “الذاكرة المتاحة هي في الواقع شيء سيء” … هو ما كنت أعالجه بالفعل. :slight_smile: