Thursday, 21 November 2024

Digital Ocean เพิ่ม Swap ให้กับ Ubuntu server EP7

Digital Ocean กับการเพิ่ม Swap file ให้กับ Ubuntu Server EP7 นี้เป็นการอธิบาย เกี่ยวกับขั้นตอนของการเพิ่ม Swap เพราะ DO ไม่ได้ทำ Swap มาให้ ดังนั้นเพื่อป้องกัน Ram ของ Server เต็ม หรือ ไม่พอใช้งาน เราต้องทำ Swap เพื่อไว้กรณี Ram ของ Server เต็ม หรือ ไม่พอใช้งาน โดยใน EP ที่ 7 นี้ จะแนะนำการทำ Swap ให้กับ Ubuntu Server โดยจะอธิบายรายละเอียดในบทความนี้

Digital Ocean

จากบทความที่แล้วทางอินดี้ได้อธิบายถึง DO กับ การเพิ่ม Swap ให้กับ CentOS EP6 ซึ่งสามารถเข้าไปอ่านบทความเกี่ยวกับการ Add Swap ให้กับ CentOS ใน คลิกที่นี่ DigitalOcean Plan การเพิ่ม Swap ให้กับ CentOS EP6 และ ในบทความนี้ทางอินดี้จะอธิบายถึงการเพิ่ม Swap ให้กับ Ubuntu Server กัน

Digital Ocean Swap คืออะไร

Swap คือ ไฟล์ประเภทหนึ่งที่ทำหน้าที่ เสมือนหน่วยความจำ หรือ Ram ที่เรารู้จัก ดังนั้นหากเราใช้งาน Web Server บน DO และ มีงบประมาณจำกัด เช่น เราใช้ Plan ที่มี Ram 2G เอาง่ายๆว่าหากวันหนึ่งมีคนเข้าใช้งาน Website เยอะ หรือ มี Process ที่ต้องใช้งานบน Server แต่ผลคือ Ram เต็ม ซึ่งหาก Ram เต็ม Process หรือ เครื่อง Web Server ของเรา อาจจะ Down ได้ ดังนั้นการมี Swap มาช่วย Ram ประมวลผลจึงจำเป็นอย่างมาก เพราะเมื่อ Ram ถูกใช้งานจนหมด เพื่อลดอาการค้าง หรือ Hang ของเครื่อง ระบบ Linux จะนำ Process บางส่วนมารันบน Swap ที่เป็น Harddisk

ซึ่งสรุปง่ายๆก้คือ Swap ช่วย Ram ในการประมวลผล หาก Ram ใน Server ใกล้เต็ม ระบบ Linux นำ Swap มาช่วยประมวลผล

Digital Ocean ทำไมต้องเพิ่ม Swap 

  • เนื่องจาก Do ในตัว Droplets ของ DO จะไม่มี Swap มาให้
  • เพื่อช่วย Ram ประมวลผลในกรณีที่ Ram ของ Server เต็ม
  • ลดอาการค้างของ Web Server ได้ เพราะเราไม่สามารถไปใช้งาน เครื่อง VM ที่ Ram เยอะๆได้
  • ลดปัญหา Out of memory error ในหน้า web site ของเรา

ขั้นตอนการ Add Swap ให้กับ Ubuntu Server บน Digital Ocean

ก่อนทำการ Add Swap แนะนำว่าให้เริ่มทำตั้งแต่สร้าง Droplets ใหม่ๆ เลย ไม่แนะนำให้ทำกับ Server ที่มีข้อมูลอยู่แล้ว เพราะข้อมูลอาจะสูญหายได้ หรือ ควร Backup ข้อมูลไว้ก่อน ก่อนที่จะทำการเพิ่ม Swap ให้กับ Server

Swap ที่ดีอ้างอิงจากหลายแหล่ง Guru ด้าน Linux บอกว่าควรสร้าง Swap ไม่เกิน 2 เท่าของ Memory

Step 1 ตรวจสอบรายละเอียดของระบบ Swap

  • ใช้ Putty หรือ SSH Access ไปยัง Ubuntu ของเรา หลังจาก Login เสร็จแล้ว ทำการ run root command ด้วย
sudo su
  • ทำการติดตั้ง Wget และ nano ทีละคำสั่ง
apt-get install wget
apt-get install nano
  • ดู Config ของทุก Config ที่เกี่ยวกับ Swap
sudo swapon --show
  • ดู Memory ด้วย Command ยกตัวอย่างจะมี Ram 2G และ ไม่มี Swap
free -h
Output:
              total        used        free      shared  buff/cache   available
Mem:          1.8Gi       152Mi       1.3Gi        16Mi       370Mi       1.5Gi
Swap:            0B          0B          0B

Step 2 ตรวจสอบพื้นที่ว่างของ SSD Hard disk

  • ตรวจสอบพื้นที่ว่างบน SSD ของ Ubuntu Server
df -h
Output:
Filesystem      Size  Used Avail Use% Mounted on
udev            978M     0  978M   0% /dev
tmpfs           199M  908K  198M   1% /run
/dev/vda1        49G  1.3G   48G   3% /
tmpfs           994M     0  994M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           994M     0  994M   0% /sys/fs/cgroup
/dev/vda15      105M  3.9M  101M   4% /boot/efi
/dev/loop0       30M   30M     0 100% /snap/snapd/8790
/dev/loop1       56M   56M     0 100% /snap/core18/1885
/dev/loop2       71M   71M     0 100% /snap/lxd/16922
tmpfs           199M     0  199M   0% /run/user/0
  • จาก output เราจะเอาพื้นที่ /dev/vda1 ซึ่งมีพื้นที่ 50G มาทำ swap

Step 3 ทำการสร้าง Swap file

  • จาก Command เป็นการสร้าง Swap ขนาด 2G หากต้องการขนาดมากกว่านี้ สามารถระบุได้เลย ว่าต้องการเท่าไร แต่ไม่ควรเกิน 2 เท่าของ RAM
sudo fallocate -l 2G /swapfile
  • ยืนยันการแบ่งพื้นที่มาทำ Swap
ls -lh /swapfile
Output:
-rw-r--r--. 1 root root 2.0G Sep 10 04:13 /swapfile
  • เสร็จสิ้นกระบวนการสร้าง Swap

Step 4 เปิดใช้งาน Swap file

  • ทำการแก้ไข Permission ของ Swap
sudo chmod 600 /swapfile
  • ยืนยันว่า Permission เปลี่ยนเป็น chmod 600
ls -lh /swapfile
Output:

-rw-------. 1 root root 2.0G Sep 10 04:13 /swapfile
  • Mark Swap file
sudo mkswap /swapfile
Output:
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=1a5f2c83-2d28-4569-9e7b-f73bd7b4cb0c
  • หลังจาก mark swap file ก็ทำการ Enable swap file
sudo swapon /swapfile
  • ยืนยันว่า Swap พร้อมใช้งาน
sudo swapon --show
Output:

NAME      TYPE SIZE USED PRIO
/swapfile file   2G   0B   -2
  • ตรวจสอบว่า Swap พร้อมใช้งาน
free -h
Output:
              total        used        free      shared  buff/cache   available
Mem:          1.8Gi       150Mi       1.3Gi        16Mi       371Mi       1.5Gi
Swap:         2.0Gi          0B       2.0Gi
  • จาก output จะเห็นได้ว่ามี swap พร้อมใช้งานขนาด 2G

Step 5 เปลี่ยน Swap ให้เป็น Permanent

  • ทำการ Backup etc/fstab
sudo cp /etc/fstab /etc/fstab.bak
  • Add Swap ไฟล์ไว้ที่สุดท้ายของ etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Step 6 จูนค่า Swap ให้เหมาะกับ Server

  • เนื่องจากค่า Swap default ตั้งมาให้เหมาะกับ Desktop ดังนั้นต้องตั้งค่าให้เหมาะกับ server
cat /proc/sys/vm/swappiness
Output:
30
  • ตั้งค่าให้เหมาะกับ server คือ 10
sudo sysctl vm.swappiness=10
Output:
vm.swappiness = 10
  • ปรับแต่งค่า /etc/sysctl.conf
sudo nano /etc/sysctl.conf
  • เลื่อนไปบรรทัดสุดท้ายใส่ค่า และ กด Ctrl+x เพื่อออก และ กด Y เพื่อ Save
vm.swappiness=10
  • ปรับแต่งค่า Adjusting the Cache Pressure Setting
cat /proc/sys/vm/vfs_cache_pressure
Output:
100
  • ปรับค่าให้เหลือ 50
sudo sysctl vm.vfs_cache_pressure=50
Output
:
vm.vfs_cache_pressure = 50
  • ปรับค่า sysctl.conf
sudo nano /etc/sysctl.conf
  • เลื่อนลงไปบรรทัดสุดท้าย และ ใส่ค่า และ กด Ctrl+x เพื่อออก และ กด Y เพื่อ Save
vm.vfs_cache_pressure=50

สรุป

การ add swap file เป็นการช่วยลดภาระของ RAM ในกรณีที่ ram ของ server ไม่พอใช้งาน โดย process บางส่วนจะถูกนำมาเขียนบน swap file แทนหาก ram server เต็ม และการ Add Swap file ที่ดีคือ ไม่เกิน 2 เท่าของแรม จากตัวอย่างเป็นการ Add 1 เท่าของ ram ลองเอาไปปรับใช้ตามความเหมาะสม

ขอบคุณข้อมูลจาก DO Communication

เว็บไซต์ของเรามีการใช้งานคุกกี้ (Cookies) เพื่อมอบประสบการณ์ที่ดียิ่งขึ้นให้แก่คุณ รวมถึงเสนอสิทธิประโยชน์ที่ตรงตามความสนใจของคุณมากที่สุด ถ้าคุณยังใช้งานต่อไปโดยไม่ปฏิเสธคุกกี้ เราจะเก็บคุกกี้เพื่อวัตถุประสงค์ข้างต้น ทั้งนี้ คุณสามารถศึกษารายละเอียดเกี่ยวกับการใช้คุกกี้ของเราได้ที่ นโยบายความเป็นส่วนตัว และ นโยบายการใช้คุกกี้

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save