Are there any guides (or Topics here on the forum) that provide tips on tuning a server that hosts Discourse sites for performance?
I ran the ./Discourse-set and it set a quarter of the ram (to 4096mb) and added 8 unicorns workers - but is there anything else we can do, or tweak these?
The server has 64GB ECC Ram and two 512GB NVMe SSDs (in a raid array). Looking at top, only around 5GB of memory us being used, with 57392484 avail Mem. It does run other non-Docker sites, but they don’t use up much of the resources and MySQL is already tuned for a large 2GB db. Load averages are generally below 1.0 (usually around 0.50 up to 1.0 with occasionally going over). No problems have been reported, but I am hoping to utilise as much of the server as possible.
I’m wondering whether to start by doubling db_shared_buffers… and what about #db_work_mem: "40MB" which is currently commented out.
هناك (أو كانت هناك) بضعة مواضيع حول الضبط. أعتقد أن معظم المواضيع الناجحة (باستثناء هذا الموضوع) تقدم تفاصيل دقيقة حول الموارد المتاحة، db_shared_buffers والإعدادات الأخرى، وما هي المشكلات، ربما مع مخرجات من htop أو أدوات أخرى. ما هو حجم قاعدة بياناتك؟ ما هي المشكلة التي تواجهها؟ (قد ترغب في بدء موضوع جديد)
شكرًا لك! لا توجد مشاكل حتى الآن. لاحظت فقط استخدامًا عاليًا للذاكرة ولكن ليس منتدى مزدحمًا. أنا معتاد على التفكير بشكل استباقي والتحقق من الموارد الأكثر استخدامًا. هذا فقط على خادم افتراضي خاص (VPS) بسعة 3 جيجابايت و 6 أنوية بسرعة 3.5 جيجاهرتز. ليس بطيئًا، بل سريع جدًا، ولكني أرى أن استخدام الذاكرة قد يصبح مشكلة في المستقبل وأنا فضولي بشأن ما يمكنني تعديله.
سأقوم بقراءة المزيد عن تطبيقات Ruby on Rails العامة وتحسينها. شكرًا مرة أخرى.
اعتمادًا على مقياس “الاستخدام” الذي تقصده، قد يكون ذلك طبيعيًا. ولكن مع 3 جيجابايت، ربما لا يكون هناك الكثير من الضبط للقيام به، كما لو كنت قد شغلت ./discourse-setup فإن تخميناته جيدة بما فيه الكفاية على الأرجح.
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.
ستحتاج إلى المزيد من عمليات Unicorn عندما يكون لديك المزيد من حركة المرور على موقعك.
أرى أن جميع عمليات Unicorn تستخدم 0.0٪ من وحدة المعالجة المركزية ويبدو أن worker[0] هو الوحيد الذي يقوم بشيء ما بالفعل.
لقد قللت الذاكرة عن طريق تشغيل عدد أقل من Unicorns. هذا جيد، لأنك لم تكن تستخدمها على ما يبدو على أي حال. لكن الذاكرة المتاحة هي في الواقع شيء سيء. أنت تحسن لمتغير خاطئ.
الذاكرة غير المستخدمة لا تشتري لك شيئًا. هذا يعني أنك تدفع مقابل شيء لا تستخدمه على أي حال. إذا كان لديك 2 جيجابايت متاحة طوال الوقت *، يمكنك تقليص حجم خادمك وتوفير بعض المال.
**) إعادة بناء Discourse سيستهلك المزيد من الذاكرة لذلك تحتاج إلى التحقق من مقدار الذاكرة المتاحة * أثناء إعادة البناء. في الممارسة العملية، لا تقل عن 2 جيجابايت الإجمالية و/أو تأكد من أن لديك مساحة مبادلة كافية كما قال Pfaffman بالفعل. *
غير صحيح. الذاكرة “الحرة” التي لا تفعل شيئًا هي سيئة. لكن الذاكرة “المتاحة” هي الذاكرة التي يستخدمها النظام والتي يمكن تحريرها بسهولة هي شيء جيد.
أو رسميًا:
الذاكرة المتاحة: تقدير لمقدار الذاكرة المتاحة لبدء تطبيقات جديدة، دون الحاجة إلى التبديل.
المصدر: man free
وفقًا لقطة الشاشة أدناه، الذاكرة الحرة لم تتغير تقريبًا. لذا فإن معظم ذاكرة النظام قيد الاستخدام. ومع ذلك، سيقوم النظام بالتبديل بشكل أقل الآن لأنه هناك المزيد من الذاكرة المتاحة التي يمكن تحريرها عند الحاجة.
أعتقد أن سيئة تعني هنا أنها تكلف، لكنها لا تعطي شيئًا. هذه طريقة شائعة جدًا للتفكير، لأنه عندما يحتاج المرء إلى المزيد من الموارد، فسيكون ذلك أكثر تكلفة أيضًا - والذاكرة العشوائية (RAM) جزء مكلف في تلك المعادلة.
وإذا لم يكن لديك الكثير من المال لإهداره، فمن الغباء دفع الكثير (تعبير إعلاني فنلندي، لا إساءة )