جاءت الخادم الافتراضي الخاص (VPS) الذي اشتريناه للتو مع 3 جيجابايت من ذاكرة الوصول العشوائي (RAM) + 1 جيجابايت من مساحة تبديل الأقسام - هل يجب علي أيضًا تعيين ملف تبديل، أم يجب أن يكون هذا كافيًا؟
هذا يكفي لمثيل صغير من Discourse.
أعني، ليس من حيث ما إذا كان سيعمل بسرعة وما إلى ذلك، ولكن من حيث ما إذا كان سيؤدي / لن يؤدي إلى أي أخطاء مثل عدم القدرة على تخصيص ذاكرة إضافية وما إلى ذلك. هل سؤالي منطقي؟ أيضًا، هل سيساعد إضافة ملف مبادلة بأولوية أقل؟ فقط للتأكد.
فقط ادفع مقابل خادم VPS أقوى بذاكرة وصول عشوائي (RAM) بسعة 8 جيجابايت على الأقل. ستضيع وقتك بخلاف ذلك.
هذا لا يجيب على سؤالي.
لا أستطيع أن أتخيل تشغيل Discourse بأقل من 8 جيجابايت من ذاكرة الوصول العشوائي.
عضو فريق Discourse يقول إنه لا بأس، أنا متأكد من أنه لا بأس.
حظا سعيدا.
سيقوم Discourse-setup بالإبلاغ عن أي مشاكل في الذاكرة.
هذا لا يجيب على سؤالي أيضًا. ربما صغت سؤالي بطريقة سيئة؟
لدي منتدى هادئ نسبيًا على خادم Digital Ocean بسعة 2 جيجابايت ذاكرة/50 جيجابايت قرص ويعمل بشكل جيد.
في وقت كتابة دليل تثبيت Discourse، كان يوصى بحد أدنى 1 جيجابايت ولكنني قمت بالترقية في وقت ما.
إذا قدمت مزيدًا من المعلومات حول حجم منتدى الخاص بك ومدى نشاطه، فمن المؤكد أنك ستحصل على إجابة أكثر تفصيلاً.
أعتقد أن مثبت Discourse يقوم تلقائيًا بإعداد ملف تبديل (لم أفعل شيئًا يدويًا) - وهذا يجيب على جزء من سؤالك، على ما أعتقد.
أعتقد أنه ينشئ ملفًا بحجم 2 جيجابايت عند التثبيت إذا اكتشف أنك لا تملك واحدًا بالفعل.
تعديل: أعتقد أن هذا أكثر دقة:
الحد الأدنى الرسمي المدعوم هو 1 جيجابايت من ذاكرة الوصول العشوائي + 2 جيجابايت من مساحة المبادلة - وهذا يكفي، إذا كان لديك منتدى صغير جدًا. على الرغم من أن كل تحديث يصبح أكبر قليلاً، أتوقع أن يأتي وقت لن يكون فيه ذلك كافيًا.
لكي يعمل المنتدى بشكل صحيح ولا يتعطل، فإن المجموع الكلي لذاكرة الوصول العشوائي ومساحة المبادلة هو الرقم المهم.
لكي يكون المنتدى سريع الاستجابة ولا يكون بطيئًا جدًا، يُفضل المزيد من ذاكرة الوصول العشوائي. لذا، إذا كانت 1 جيجابايت من ذاكرة الوصول العشوائي + 2 جيجابايت من مساحة المبادلة كافية، فإن 3 جيجابايت من ذاكرة الوصول العشوائي + 1 جيجابايت من مساحة المبادلة ستكون كافية، وقد توفر أداءً أفضل.
لدي منتديان، كلاهما صغير جدًا، أحدهما يعمل على 1+2 والآخر على 2+2.
كتبت هذا العام الماضي:
تعديل: إذا كان لديك مساحة قرص كافية لإضافة مساحة مبادلة، فافعل ذلك - لا يوجد سبب وجيه لعدم القيام بذلك، وقد تكون هناك حاجة إليها. سيخبرك الأمر free بالمقدار المستخدم، ويمكن للأمر vmstat تقديم شرح مستمر. لكن متوسط الاستخدام ليس مثيرًا للاهتمام - الاستخدام الأقصى هو المثير للاهتمام.
حسنًا، سؤالي نظري أكثر. لا يمكنني التنبؤ بشعبية المنتدى في هذا الوقت. ما أحاول فهمه هو، ماذا يجب أن أفعل للتخفيف من الاحتمال النظري لنفاد الذاكرة العشوائية (RAM) في سيناريو ما. لست على علم متى يستهلك Discourse الذاكرة أكثر - سواء عند إجراء النسخ الاحتياطي، أو عند تغيير حجم الصور، أو عند التحديث عبر لوحة تحكم المسؤول، أو … ليس لدي أي فكرة.
لذلك، كان ما أفكر فيه هو، ما هو ملف المبادلة الذي يجب أن أنشئه للتأكد من أن Discourse لن يتعطل ولكنه سيصبح بطيئًا جدًا في حالة عدم وجود ذاكرة كافية. في نفس الوقت، اكتشفت أن هناك بالفعل قسم مبادلة بحجم 1 جيجابايت، لذلك كان تفكيري، ماذا لو كانت 3 جيجابايت من الذاكرة الحقيقية + قسم مبادلة بحجم 1 جيجابايت غير كافيين… هل يجب علي أيضًا إنشاء ملف مبادلة بحجم بضعة جيجابايت مع أولوية أقل (مقارنة بجيجابايت القسم). آمل أن يكون سؤالي أكثر منطقية الآن.
إذا كان الأمر كذلك، فنعم. سيكون من المفيد تحديث ملف القراءة (readme) الخاص بالتثبيت. بالنظر إلى الأيام الخوالي عندما كان يُذكر رسميًا إنشاء ملف مبادلة في ملف القراءة الخاص بالتثبيت، فأنا الآن في حيرة بعض الشيء بشأن ما إذا كان يتم ذلك تلقائيًا، أو لم يعد ضروريًا، أو لأي سبب آخر تم إزالته من الدليل الرسمي.
… ماذا عن إذا اكتشف الملف بحجم 1 جيجابايت ولكنه يعتمد على القسم؟
إذن، استمرار سؤالي سيكون، هل من الجيد أن يكون لديك منطقتا مبادلة، واحدة تعتمد على القسم، والأخرى تعتمد على الملف.
لا توجد مشكلة على الإطلاق في وجود مناطق تبديل متعددة (أو بالفعل ملفات تبديل متعددة)
أعتقد أن ذروة الذاكرة الأكبر تحدث أثناء الترقية - والخطر هناك هو تعطل المنتدى حتى تتمكن من الحصول على المساعدة.
من الجدير أيضًا ضبط التجاوز على الإعداد الأكثر سخاءً: ستجد أنه تم ملاحظته بالفعل في سجل الترقية الخاص بك، إذا لم تكن قد قمت بتعديله بالفعل
تحذير: تم تعيين overcommit_memory على 0! قد تفشل عملية الحفظ في الخلفية في ظل ظروف انخفاض الذاكرة. لإصلاح هذه المشكلة، أضف ‘vm.overcommit_memory = 1’ إلى /etc/sysctl.conf ثم أعد التشغيل أو قم بتشغيل الأمر ‘sysctl vm.overcommit_memory=1’ ليصبح هذا ساري المفعول.
تم ذكر هذا عدة مرات من قبل ولكن هناك مقاومة لإضافته إلى وصفة تثبيت Discourse القياسية. إنه نوع الإعداد الذي لا يمكن القيام به داخل صورة docker ولكن يجب القيام به على المضيف.
كل ما يمكنك فعله هو تقليل المخاطر، وإذا كان لديك المزيد من الأموال، يمكنك تقليل المخاطر بدرجة أكبر. هذا السؤال في منطقة المقايضات!
إذا كان لدي قرص غير محدود، سأضيف بالتأكيد ما يصل إلى 4 جيجابايت من المبادلة قبل التفكير في الأمر - لن يضر. إذا كانت لدي أموال غير محدودة، فسأحصل على أقصى ذاكرة وصول عشوائي (RAM) يمكنني الحصول عليها. لكن في حالتي، لا أملك ذلك.
إذا كنت تتوقع أن ينمو منتداك، فيجب أن تتوقع زيادة الموارد التي تحتاجها لتشغيله، بمرور الوقت، بدلاً من توقع تحديد حجم الآلة مرة واحدة في البداية.
لم أقم بزيادة أحجام الأجهزة التي أستخدمها لمنتدياتي بعد، لكنني أتوقع أن أفعل ذلك، ربما هذا العام أو ربما العام المقبل.
يجب أن يكون كذلك. أقوم عادةً بإعداد قطرات بحجم 1 و 2 جيجابايت مع 2 جيجابايت من الـ swap وتعمل. حاليًا، يتطلب إعادة البناء الكثير من الذاكرة العشوائية، ولكن يجب أن يعمل ذلك.
تحتاج إلى خيال أفضل.
أقوم بتشغيل هذا القدر فقط على المواقع التي تشهد حوالي مليون مشاهدة صفحة شهريًا وقواعد بيانات كبيرة إلى حد ما.
ذكرت هذا فور تثبيت Discourse لأول مرة (Warnings: overcommit_memory and Transparent Huge Pages). لماذا هو جدير بالاهتمام وما هو سبب المقاومة؟ لم أقم بتغيير الإعداد الافتراضي.
إليك شيء كتبته سابقًا:
خاصة
بشكل افتراضي، سيرفض النواة التخصيصات التي لا يمكنه تلبيتها. مع هذا التعديل، سيقبل هذه التخصيصات، وقد يتم تجنب الفشل، أو قد يحدث لاحقًا عندما يصبح التخصيص قيد الاستخدام.
إذا كان إجمالي ذاكرة الوصول العشوائي (RAM) والتبديل (swap) لديك كبيرًا بما يكفي، فلن تحتاج أبدًا إلى تغيير هذا الإعداد. إذا لم يكن إجمالي ذاكرتك كبيرًا، فقد يساعد تغييره.
أيضًا
الهدف هو زيادة مقدار الذاكرة الافتراضية المتاحة. (أي، مجموع ذاكرة الوصول العشوائي (RAM) والتبديل (swap).) إذا نفدت ذاكرة الوصول العشوائي (RAM)، فستبدأ في مواجهة مشاكل في الأداء. ولكن إذا نفدت الذاكرة الافتراضية، فسوف تفشل العمليات في البدء أو ستموت أو سيتم قتلها. يصبح الأمر قاسياً.
أولئك منا الذين لديهم ذاكرة وصول عشوائي (RAM) وقرص صغير قد لا يكونون أحرارًا في إضافة الكثير من التبديل (swap)، ولكن يبدو أن 2 جيجابايت هو الحد الأدنى الجيد. (إذا كان لديك 16 جيجابايت من ذاكرة الوصول العشوائي (RAM) فقد لا تحتاج إلى أي تبديل (swap)، ولكن هذه قصة أخرى. إنها مجموع الاثنين هو المهم، عندما تكون المشكلة هي فشل الأشياء.)
أما بالنسبة للمقاومة، أعتقد أنها بسبب تصور أن هذا التغيير لصالح redis، ولن يحتاجه معظم الناس.
تعديل: هذا الموضوع الأخير ربما يكون مثالاً على ذلك، حيث نفدت الذاكرة من مثيل صغير، ولم يتم تعيين تجاوز السعة (overcommit). لكننا لا نعرف ما إذا كان تعيين تجاوز السعة (overcommit) سيحل هذه المشكلة - قام الشخص بالترقية إلى ذاكرة وصول عشوائي (RAM) بسعة 8 جيجابايت.
