คำตอบสั้น ๆ: อ่านค่า CPU, RAM, Swap และ Load Average ของ Linux Server ด้วย top, free, vmstat และ iostat เพื่อหาโปรเซสที่กินทรัพยากรและรู้ว่าเครื่องช้าเพราะอะไร
คู่มือนี้อธิบาย Linux ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
เมื่อเว็บไซต์หรือแอปบนเซิร์ฟเวอร์ตอบสนองช้า สิ่งแรกที่ควรทำคือดูว่าทรัพยากรส่วนไหนกำลังตึง CPU ถูกใช้เต็ม RAM ไม่พอจนต้องใช้ Swap หรือดิสก์ตอบสนองไม่ทัน แต่ละกรณีแก้ต่างกัน คู่มือนี้รวบรวมคำสั่งมาตรฐานที่มีในแทบทุก Linux Distro พร้อมวิธีอ่านค่าที่ได้
สิ่งที่ต้องเตรียม
- เข้าเซิร์ฟเวอร์ผ่าน SSH ได้ (ถ้าเครื่องช้ามากจน SSH ไม่ตอบ ใช้ Console ตามคู่มือ การ Remote เข้า Console Server ผ่าน Web UI)
- คำสั่งส่วนใหญ่ไม่ต้องใช้ root ยกเว้นการอ่าน Log ของ Kernel
- Ubuntu 22.04/24.04 หรือ AlmaLinux/Rocky Linux 8-9
ขั้นตอนที่ 1: ดูจำนวน CPU และ Load Average
nproc
uptimeตัวอย่างผลลัพธ์
4
10:15:32 up 12 days, 3:04, 1 user, load average: 3.20, 2.85, 1.90Load Average สามตัวคือค่าเฉลี่ย 1, 5 และ 15 นาทีล่าสุด หมายถึงจำนวนโปรเซสที่กำลังใช้ CPU หรือรอคิวอยู่ รวมถึงโปรเซสที่รอดิสก์ (สถานะ D) บน Linux วิธีอ่านคร่าว ๆ คือเทียบกับจำนวน CPU จาก nproc
- Load ต่ำกว่าจำนวน CPU: ยังมีกำลังเหลือ
- Load ใกล้เคียงจำนวน CPU: ใช้งานเต็มพอดี
- Load สูงกว่าจำนวน CPU ต่อเนื่อง: มีงานรอคิว เครื่องจะเริ่มช้า
ตัวอย่างด้านบนคือเครื่อง 4 Core มี Load 3.20 ถือว่ายังรับได้ และค่า 1 นาทีสูงกว่า 15 นาที แปลว่าโหลดกำลังเพิ่มขึ้น หาก Load สูงแต่ CPU ไม่เต็ม มักเป็นเพราะรอดิสก์ ให้ดูขั้นตอนที่ 4
ขั้นตอนที่ 2: ดูภาพรวมแบบเรียลไทม์ด้วย top
topบรรทัดที่ขึ้นต้นด้วย %Cpu(s) สำคัญที่สุด
| ค่า | ความหมาย |
|---|---|
us | CPU ที่โปรแกรมผู้ใช้ใช้ เช่น PHP, Node.js, MySQL |
sy | CPU ที่ Kernel ใช้ |
id | CPU ที่ว่าง |
wa | เวลาที่ CPU รอดิสก์ ถ้าสูงต่อเนื่องแปลว่าดิสก์เป็นคอขวด |
st | Steal Time เวลาที่ Virtual Machine รอ CPU จริงจาก Host |
ปุ่มลัดที่ใช้บ่อยใน top: 1 แสดงแยกทีละ Core, P เรียงตาม CPU, M เรียงตามหน่วยความจำ, c แสดงคำสั่งเต็ม และ q ออก หากต้องการหน้าจอที่อ่านง่ายกว่า ติดตั้ง htop ได้ด้วย sudo apt install -y htop หรือ sudo dnf install -y htop (บน AlmaLinux และ Rocky Linux ต้องเปิด EPEL ก่อนด้วย sudo dnf install -y epel-release)
หมายเหตุ: หากค่า
stสูงต่อเนื่อง (เช่นเกิน 10%) ทั้งที่โปรแกรมบนเครื่องใช้ CPU ไม่มาก ให้เก็บผลลัพธ์ของtopพร้อมเวลาที่เกิดไว้ แล้วแจ้งทีม Support เพื่อตรวจสอบฝั่ง Host
ขั้นตอนที่ 3: ตรวจหน่วยความจำ RAM และ Swap
free -h total used free shared buff/cache available
Mem: 7.7Gi 5.1Gi 310Mi 120Mi 2.3Gi 2.2Gi
Swap: 2.0Gi 1.4Gi 600Miค่าที่ควรดูคือ available ไม่ใช่ free เพราะ Linux นำ RAM ที่ว่างไปใช้เป็น Cache ของไฟล์ (buff/cache) และคืนให้โปรแกรมได้ทันทีเมื่อต้องการ ค่า free ที่ต่ำจึงเป็นเรื่องปกติ สัญญาณที่น่ากังวลคือ available ต่ำมาก และ Swap ถูกใช้เพิ่มขึ้นเรื่อย ๆ
ดูว่ามีการสลับหน่วยความจำไป Swap อยู่จริงหรือไม่ด้วย vmstat ทุก 1 วินาที 5 ครั้ง
vmstat 1 5คอลัมน์ si และ so (Swap In/Out) ควรเป็น 0 หรือใกล้ 0 หากมีค่าต่อเนื่อง แปลว่า RAM ไม่พอ คอลัมน์ r คือจำนวนโปรเซสที่รอ CPU ถ้ามากกว่าจำนวน Core ต่อเนื่องแปลว่า CPU ไม่พอ ส่วน wa คือเวลารอดิสก์เช่นเดียวกับใน top หากเครื่องไม่มี Swap เลยและ RAM ตึงบ่อย ดูวิธีเพิ่มได้ที่ เพิ่ม Swap File บน Linux Server
ขั้นตอนที่ 4: ตรวจการทำงานของดิสก์
ติดตั้งชุดเครื่องมือ sysstat ก่อน
sudo apt install -y sysstat # Ubuntu
sudo dnf install -y sysstat # AlmaLinux / Rocky Linuxiostat -x 1 3ดูรอบที่ 2 และ 3 (รอบแรกเป็นค่าเฉลี่ยตั้งแต่บูต) คอลัมน์ %util ที่ใกล้ 100% ต่อเนื่อง และค่า r_await หรือ w_await (มิลลิวินาที) ที่สูงผิดปกติ แปลว่าดิสก์ทำงานไม่ทัน มักเกิดจากฐานข้อมูลที่ไม่มี Index, งานสำรองข้อมูล หรือ RAM ไม่พอจนต้องใช้ Swap หนัก