Thursday, 21 November 2024

Server DigitalOcean การ Add Swap บน Debian 10 EP5

Server DigitalOcean กับขั้นตอนการ Add Swap บน Debian 10 เพื่อใช้งาน Swap เหตุผลในการทำ Swap คือ ใน Cloud ของ Do จะไม่มี Swap มาเป็น Default ดังนั้นเราต้องทำการ Add Swap ก่อนเพื่อป้องกัน Memory ของ Web Server ของเราเต็ม หรือ ไม่พอใช้ในบางกรณี

Server DigitalOcean

จากบทความที่แล้วได้เขียนถึงเครื่องมือ Control Panel ของทาง DO ว่าใช้งานอะไรได้บ้าง อ่านเพิ่มเติมได้ที่ DO Host เรียนรู้เบื้องต้น EP4 โดยหลังจากที่เราสร้าง Linux Droplets บน DO เรียบร้อยแล้ว สิ่งที่ต้องทำเพิ่มคือการ Add Swap สำหรับใช้พื้นที่ Harddisk มาช่วย Ram ในการประมวลผล และ รัน Web Server ของเราไม่ให้ล่วง

Server DigitalOcean 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 Server DigitalOcean

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

Server DigitalOcean ขั้นตอนการ Add Swap ให้กับ Debian 10

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

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

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

  • SSH Login เข้า Terminal ของ Linux debian และ run root ด้วย Command
Sudo su
  • ทำการติดตั้ง Wget และ nano
apt install wget
apt install nano
  • รันคำสั่งเพื่อขอดูการ Config ทุก Config ที่เกี่ยวกับ Swap
swapon --show
  • ดู Memo ทั้งหมดว่ามีขนาดเท่าไร
free -h
Output:
             total        used        free      shared  buff/cache   available
Mem:          2.0Gi        41Mi       1.8Gi       2.0Mi        91Mi       1.8Gi
Swap:            0B          0B          0B
  • จาก output ของการ run command ข้างบน คือ Droplets ของ DO ไม่ได้ทำการสร้าง Swap ให้ดังนั้น step ต่อไปคือการสร้าง Swap

Step 2 ทำการตรวจสอบพื้นที่ว่างของ Hard Disk เพื่อจะเอามาทำ Swap

จริงๆการเช่า DO Plan 5$ หรือ 10$ มีพื้นที่เหลือพอให้ทำ Swap เพระ Do ให้พื้นที่เยอะ แต่เพื่อเป็นการเรียนรู้ และ เข้าใจการทำงาน ลองมาทำกันดู

  • พิมพ์คำสั่งของ Linux เพื่อขอดูพื้นที่ที่เหลือ
df -h
Output:
Filesystem      Size  Used Avail Use% Mounted on
udev            991M     0  991M   0% /dev
tmpfs           200M  2.9M  197M   2% /run
/dev/vda1        50G  974M   47G   3% /
tmpfs           999M     0  999M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           999M     0  999M   0% /sys/fs/cgroup
tmpfs           200M     0  200M   0% /run/user/0
  • จากผลที่ได้คือมีพื้นที่เหลือพอ ซึ่งเราจะเอาในส่วนของ /dev/vda1 มาใช้งานเป็น Swap file

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

การสร้าง Swap ไฟล์ที่ดีคือไม่เกิน 2 เท่า ของขนาด Ram ที่มี ในเครื่องตัวอย่างคือใช้ Ram 2G ดังนั้นจะสร้าง Swap 2G ด้วย

  • รัน command เพื่อสร้าง Swap file ขนาด 2G
sudo fallocate -l 2G /swapfile
  • ยืนยันการเปลี่ยน Swap file และ ผลที่ได้ตาม output
ls -lh /swapfile
Output:

-rw-r--r-- 1 root root 2.0G Sep  4 12:51 /swapfile

Step 4 สร้าง Swap File

  • กำหนด Permisson ของ Swap file
sudo chmod 600 /swapfile

ยืนยัน Swap file permission

ls -lh /swapfile
output:
-rw------- 1 root root 1.0G May 29 17:34 /swapfile

ดำเนินการสร้าง Swap file ด้วย คำสั่ง และ ผลลัพท์ที่ได้

sudo mkswap /swapfile
output:
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=dc7b1207-a121-43da-bf00-05a63968d8a6
  • หลังจากสร้าง Swap file เราจะรันเพื่อ enable swap file และ ผลที่ได้
sudo swapon /swapfile
  • ยืนยันว่า Swap file พร้อมใช้งาน และ ผลลัพท์ที่ได้
sudo swapon --show
Output:
NAME      TYPE SIZE USED PRIO
/swapfile file   2G   0B   -2
  • เราสามารถใช้คำสั่งดู memory เพื่อใช้ดู Swap file และ memory ได้ และ ผลลัพท์ที่ได้
free -h
output:
              total        used        free      shared  buff/cache   available
Mem:          2.0Gi        45Mi       1.7Gi       2.0Mi       232Mi       1.8Gi
Swap:         2.0Gi          0B       2.0Gi
  • จะสังเกตุได้ว่ามี Swap file เพิ่มขึ้นมา 2G แล้ว ก็เข้าสู่ขั้นตอนต่อไป

Step 5 ทำ Swap file ให้เป็น Permanent

หลังจากสร้าง Swap file เรียบร้อยตาม step มาแล้วต่อไปก็จะเป็นการทำ Swap file ให้เป็น Permanent โดยเราจะไปทำกันที่ /etc/fstab

  • ทำการ Backup /etc/fstab เพื่อผิดพลาด
sudo cp /etc/fstab /etc/fstab.bak
  • Add Swap file ลองไปที่บรรทัดสุดท้ายของ /etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Step 6 ทำการ Tuning Swap File

  • ดำเนินการ run คำสั่ง เพื่อทำการ tuning swap และ output ที่ได้
cat /proc/sys/vm/swappiness
Output:
60
  • สำหรับ Linux desktop ค่า 60 นั้นดี แต่สำหรับ Server แนะนำให้เข้าใกล้ 0 มากที่สุด ในที่นี้แนะนำคือ 10
sudo sysctl vm.swappiness=10
Output:
vm.swappiness = 10
  • Swap file ที่เราต้องการสร้างต้องทำเป็น Persistent ดังนั้นที่เรา set มาเราไม่ต้องการให้หายไปหลังจาก Reboot และจะให้ค่านี้เป็น อัตโนมัติทุกครั้ง เราจะไปแก้ไขที่ /etc/sysctl.conf
sudo nano /etc/sysctl.conf
  • ให้ใช้ลูกศรเลื่อนลง มาเรื่อยๆ จนบรรทัดสุดท้ายของไฟล์ /etc/sysctl/conf และใส่ค่า
vm.swappiness=10
  • กดปุ่ม Ctrl + X เพื่อออกจากหน้า /etc/sysctl และ กด Y เพื่อ Save
  • ปรับแต่ง Cache Pressure โดยขั้นตอนแรกเป็นการ run command เพื่อดูข้อมูลค่าของ vfs_cache_pressure ว่าเป็นเท่าไร
cat /proc/sys/vm/vfs_cache_pressure
Output:
100
  • ทำการปรับแต่ง Cache Pressure ให้เหลือ 50
sudo sysctl vm.vfs_cache_pressure=50
Output:
vm.vfs_cache_pressure = 50
  • ทำการบันทึกค่าของ Cache pressure ที่ไฟล์ /etc/sysctl/conf
sudo nano /etc/sysctl.conf
  • เลือนลงมาบรรทัดสุดท้าย และ เพิ่มคำว่า
vm.vfs_cache_pressure=50
  • ทำการกดปุ่ม Ctrl X และ กด Y เพื่อ save
  • ขอบพระคุณข้อมูลจาก Community ของ DO

สรุป

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

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

Privacy Preferences

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

Allow All
Manage Consent Preferences
  • Always Active

Save