Thursday, 21 November 2024

DigitalOcean Plan การเพิ่ม Swap ให้กับ CentOS EP6

DigitalOcean Plan กับบทความการเพิ่ม Swap ให้กับ CentOS เพราะ DigitalOcean จะไม่ Add Swap file มาให้เป็นค่าเริ่มต้น ดังนั้น เพื่อกัน Web ของเรา Memory ไม่พอใช้ ทางอินดี้ จะแนะนำ ขั้นตอนการ Add swap file เพื่อป้องกันการเต็ม หรือ Memory ไม่พอจน Web hosting หรือ VPS ของเรา Downtime

DigitalOcean Plan

จากบทความที่แล้วอินดี้ได้เขียนเกี่ยวกับการเพิ่ม Swap ใน Debian 10 ซึ่งสามารถเข้าไปอ่านได้ที่บทความ Server DigitalOcean การ Add Swap บน Debian 10 EP5 และ มาใน EP6 นี้จะมาแนะนำการ Add Swap สำหรับ CentOS กันบ้าง ซึ่งขันตอนก็แทบไม่ต่างกับการ add swap บน Debian เลย

DigitalOcean Plan 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 มาช่วยประมวลผล

ทำไมต้องเพิ่ม Swap DigitalOcean Plan

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

ขั้นตอนการ Add Swap ให้กับ CentOS

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

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

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

  • ใช้ Putty หรือ SSH Access ไปยัง CentOS ของเรา หลังจาก Login เสร็จแล้ว ทำการ run root command ด้วย
sudo su
  • ทำการติดตั้ง Wget และ nano ทีละคำสั่ง
yum install wget
yum 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 ของ CentOS
df -h
Output:
[root@centos-s-1vcpu-2gb-sgp1-01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        898M     0  898M   0% /dev
tmpfs           914M     0  914M   0% /dev/shm
tmpfs           914M   17M  898M   2% /run
tmpfs           914M     0  914M   0% /sys/fs/cgroup
/dev/vda1        50G  1.6G   49G   4% /
tmpfs           183M     0  183M   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 ลองเอาไปปรับใช้ตามความเหมาะสม

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

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

Privacy Preferences

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

Allow All
Manage Consent Preferences
  • Always Active

Save