إنشاء ملف تبادل (swapfile) لخادم Linux الخاص بك

:bulb: For servers with <= 2GB of RAM, running ./discourse-setup will prompt for and automatically create a 2GB swapfile.

Most cloud virtual machine providers do not set up swapfiles as part of their server provisioning.

In particular, upgrading Discourse produces a lot of memory pressure. With a swap file, rather than randomly terminating processes with an out of memory error, things will slow down instead. Having a swap file is a cheap insurance policy that protects you from many other load related failures.

This can be done at any time from the command line on your server.

Set up a 2GB swap file

We recommend a 2GB swap file for Discourse, unless your server has 4GB or more of memory.

In the shell you have opened to your droplet, do the following:

:warning: You will need to be root for much of this, so either be root or sudo -s before running these commands! Don’t forget to exit root afterwards.

  1. Create an empty swapfile

     install -o root -g root -m 0600 /dev/null /swapfile
    
  2. write out a 2GB file named ‘swapfile’

     dd if=/dev/zero of=/swapfile bs=1k count=2048k
    
  3. tell linux this is the swap file:

     mkswap /swapfile
    
  4. Activate it

     swapon /swapfile
    
  5. Add it to the file system table so its there after reboot:

     echo "/swapfile       swap    swap    auto      0       0" | tee -a /etc/fstab
    
  6. Set the swappiness to 10 so its only uses as an emergency buffer

     sysctl -w vm.swappiness=10
     echo vm.swappiness = 10 | tee -a /etc/sysctl.conf
    

The whole thing as a single copy and pastable script:

install -o root -g root -m 0600 /dev/null /swapfile
dd if=/dev/zero of=/swapfile bs=1k count=2048k
mkswap /swapfile
swapon /swapfile
echo "/swapfile       swap    swap    auto      0       0" | tee -a /etc/fstab
sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | tee -a /etc/sysctl.conf

Last edited by @JammyDodger 2022-05-23T18:45:59Z

Check documentPerform check on document:
95 إعجابًا

لقد كنت أحاول إعداد ملف مبادلة أكبر (4 جيجابايت بدلاً من 2 جيجابايت الافتراضية)، ولكني واجهت هذا عند تشغيل البرنامج النصي أعلاه:

rm: لا يمكن إزالة `swapfile’: العملية غير مسموح بها

للتغلب على هذا، اضطررت إلى القيام بهذا أولاً:

  1. إعادة تشغيل الخادم (لم يسمح لي بـ swapoff، ربما بسبب الاستخدام المكثف لملف المبادلة)
  2. swapoff -a -v
3 إعجابات

لأسباب مماثلة، أعمل بملفي مبادلة:

# swapon
NAME                       TYPE  SIZE  USED PRIO
/var/local/swap/swapfile.0 file 1024M 44.9M   -3
/var/local/swap/swapfile.1 file 1024M 1024M   -2

قد يكون ملف المبادلة الثاني طريقة ذكية لتجنب إعادة التشغيل. قم بإنشاء ملف مبادلة ثانٍ، وقم بتمكينه، ثم قم بإزالة الملف الأول.

4 إعجابات

إذًا، لن نحتاج إلى اتباع هذا الدليل لإنشاء ملف تبديل بحجم 2 جيجابايت نظرًا لأن التثبيت يقوم بذلك بالفعل إذا كانت ذاكرتنا أقل من 2 جيجابايت؟

نعم - ولكن إذا قمت بتغيير تكوين الخادم الخاص بك، أو ربما إذا قمت بالترحيل، فقد تحتاج إلى الاهتمام بهذا بنفسك. (في نفس الوقت هناك تكوينان مهمان للنواة يجب تغييرهما لا يهتم بهما التثبيت - انظر تكوين نشر Discourse المفضل لدى MKJ

تم تقسيم 10 مشاركات إلى موضوع جديد: متطلبات ذاكرة إعادة البناء العالية: إصدار أبريل 2025