เซิร์ฟเวอร์เล็กมักหน่วยความจำหมดในจังหวะที่แย่ที่สุด: ตอน apt upgrade ตอน build Docker หรือตอนสำรองข้อมูลกลางดึก หากไม่มี swap OOM killer ของเคอร์เนลจะเลือกโปรเซสหนึ่งแล้วหยุดมัน ซึ่งมักเป็นฐานข้อมูลของคุณ ไฟล์ swap คือเข็มขัดนิรภัยราคาถูกที่ให้ช่วงพีกเหล่านั้นมีทางระบาย ใช้แค่ห้าคำสั่ง
1. ตรวจสอบสิ่งที่มีอยู่
swapon --show
free -h
หาก swapon --show ไม่แสดงอะไร แปลว่ายังไม่มี swap
2. สร้างไฟล์ swap
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
chmod 600 สำคัญ: swap อาจมีเศษของทุกสิ่งที่เคยอยู่ในหน่วยความจำ รวมถึงความลับ จึงควรให้ root อ่านได้เท่านั้น หาก fallocate แจ้งข้อผิดพลาด “operation not supported” ให้ใช้ dd แทน:
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
3. ทำให้ถาวร
หากไม่ทำขั้นตอนนี้ swap จะหายไปเมื่อรีบูต:
echo '/swapfile none swap sw 0 0' >> /etc/fstab
4. ปรับ swappiness
บอกให้เคอร์เนลใช้ RAM ก่อน และใช้ swap เมื่อมีแรงกดดันเป็นหลัก:
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
sysctl --system
5. ตรวจสอบ
swapon --show
free -h
คุณควรเห็นอุปกรณ์ swap ขนาด 2 GB และ cat /proc/sys/vm/swappiness ควรแสดงค่า 10
ควรใหญ่แค่ไหน?
- เซิร์ฟเวอร์ RAM 1–2 GB: swap 1–2 GB
- 4 GB ขึ้นไป: 1–2 GB ยังเพียงพอเป็นตาข่ายนิรภัย
อย่ากำหนดขนาด swap เป็น “สองเท่าของ RAM” บนเซิร์ฟเวอร์ swap มีไว้รองรับช่วงพีกสั้น ๆ ไม่ใช่เพื่อรันงานที่ใส่ในหน่วยความจำไม่พอ
เมื่อ swap ไม่ใช่คำตอบ
เฝ้าดูสักสองสามวัน:
vmstat 5
คอลัมน์ si และ so แสดงจำนวนหน้าที่อ่านจากและเขียนลง swap ต่อวินาที การทำงานเป็นครั้งคราวถือว่าปกติ แต่ค่าที่ไม่เป็นศูนย์ตลอดเวลาหมายความว่าเซิร์ฟเวอร์หน่วยความจำไม่พอและทุกอย่างกำลังรอดิสก์ ถึงตอนนั้นทางแก้คือเพิ่ม RAM: ดู VPS ต้องใช้ RAM เท่าไร ที่ EQVPS คุณสามารถ เปลี่ยนไปใช้แพ็กเกจที่ใหญ่กว่า ได้โดยไม่ต้องติดตั้งใหม่ ข้อมูลของคุณยังอยู่ที่เดิม
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ