ดูและจัดการ Resource Usage ใน cPanel

อ่านค่า CPU, RAM, Entry Process และ IO เพื่อวิเคราะห์และแก้ปัญหาเว็บช้าได้ด้วยตัวเอง

ดูและจัดการ Resource Usage ใน cPanel

หนึ่งในปัญหาที่ผู้ใช้ Shared Hosting พบบ่อยที่สุดคือ "เว็บช้าลงกะทันหัน" หรือ "เว็บล่ม" โดยไม่ทราบสาเหตุ หลายครั้งต้นตอมาจากการใช้ทรัพยากรเกินกำหนด ซึ่ง cPanel มีเครื่องมือที่ชื่อว่า Resource Usage ให้ตรวจสอบสถิติการใช้งานได้โดยละเอียด บทความนี้จะพาคุณเข้าใจแต่ละค่า พร้อมวิธีแก้ไขเมื่อทรัพยากรเกิน limit

Resource Usage ใน cPanel คืออะไร

Resource Usage คือหน้าสรุปสถิติการใช้ทรัพยากรเซิร์ฟเวอร์ของบัญชี Hosting ของคุณ โดยดึงข้อมูลจากระบบ CloudLinux ซึ่งเป็น OS ที่ Shared Hosting ส่วนใหญ่ใช้งาน เพื่อควบคุมไม่ให้ผู้ใช้รายใดรายหนึ่งกินทรัพยากรของคนอื่น

คุณจะพบเมนู Resource Usage ได้ใน cPanel ภายใต้หมวด Metrics หรือบางโฮสต์จะชื่อว่า CPU and Concurrent Connection Usage คลิกเข้าไปจะพบกราฟและตัวเลขสถิติย้อนหลังสูงสุด 24 ชั่วโมง

ทำความเข้าใจค่า Resource แต่ละตัว

CPU Usage (เปอร์เซ็นต์การใช้ CPU)

แสดงเปอร์เซ็นต์การใช้งาน CPU เทียบกับ limit ที่แพ็กเกจกำหนดไว้ เช่น หากแผน Hosting ของคุณมี CPU limit 100% (1 core) และกราฟแสดง 80% แสดงว่าเว็บคุณกิน 0.8 core อยู่ตลอดเวลา ซึ่งอาจทำให้เว็บช้า หรือหาก spike ถึง 100% บ่อยๆ หน้าเว็บจะโหลดช้ามาก

สาเหตุที่ทำให้ CPU สูง ได้แก่ ปลั๊กอิน WordPress ที่หนัก, cron job ที่ทำงานบ่อย, PHP script ที่วนลูปมาก หรือ bot ที่ crawl เว็บไม่หยุด

Physical Memory (RAM)

แสดงปริมาณ RAM ที่ PHP process ทั้งหมดของคุณใช้งานอยู่ หน่วยเป็น MB ค่านี้จะพุ่งสูงเมื่อมีผู้เยี่ยมชมพร้อมกันจำนวนมาก หรือ WordPress ใช้ plugin ที่ load ข้อมูลลง memory จำนวนมาก เช่น WooCommerce ที่มีสินค้าหลายพัน SKU

Entry Processes (จำนวน Process พร้อมกัน)

คือจำนวน PHP process ที่ทำงานพร้อมกันในขณะนั้น นับรวม request ทุก request ที่กำลัง execute อยู่ ถ้า limit คือ 20 Entry Process และเว็บได้รับ traffic พร้อมกัน 25 คน หน้าที่ 21-25 จะได้รับ Error 508 ทันที ค่านี้สำคัญมากสำหรับเว็บ WordPress ที่ไม่มี cache

IO Usage (Input/Output)

แสดงความเร็วในการอ่าน/เขียนไฟล์บนดิสก์ หน่วยเป็น MB/s เว็บที่ใช้ IO สูงมักเป็นเว็บที่เขียน log ขนาดใหญ่, query database บ่อย, หรือมีการ generate ไฟล์ cache จำนวนมาก

IOPS (Input/Output Operations Per Second)

ต่างจาก IO ที่วัดเป็น MB/s โดย IOPS วัดจำนวนครั้งที่เข้าถึงดิสก์ต่อวินาที เว็บที่อ่าน/เขียนไฟล์เล็กๆ จำนวนมาก เช่น WordPress ที่ load ไฟล์ PHP หลายร้อยไฟล์ต่อ request จะทำให้ IOPS สูง

วิธีอ่าน Resource Usage Graph ใน cPanel

  1. Login เข้า cPanel แล้วไปที่ Metrics > Resource Usage
  2. กราฟด้านบนแสดง 24 ชั่วโมงล่าสุด แกน Y คือเปอร์เซ็นต์เทียบ limit
  3. เส้นสีแดง (หรือส้ม) คือ threshold ที่ควรระวัง ถ้าเส้นกราฟพุ่งขึ้นแตะหรือเกินเส้นนี้บ่อย แสดงว่าแพ็กเกจคุณอาจไม่พอ
  4. ด้านล่างจะมีตาราง Snapshot แสดงค่า peak สูงสุดในช่วงเวลาต่างๆ
  5. คลิกที่กราฟแต่ละตัวเพื่อ zoom ดูรายละเอียดรายชั่วโมง
Tip: ดู Resource Usage พร้อมกับ Access Log ใน cPanel (Logs > Raw Access) เพื่อหาว่า request ใดทำให้ CPU หรือ Entry Process พุ่งในช่วงเวลานั้น

วิธีลด Resource Usage โดยไม่ต้องอัพเกรดแผน

1. เปิด WordPress Caching

การติดตั้ง Plugin Cache เช่น WP Super Cache, W3 Total Cache หรือ LiteSpeed Cache (ถ้าโฮสต์รองรับ) จะช่วยลด PHP execution ลงได้ 70-90% เพราะหน้าที่เคย render ด้วย PHP จะถูก serve เป็น static HTML แทน ทำให้ Entry Process และ CPU ลดลงทันที

2. ปรับ PHP Memory Limit

ใน cPanel ไปที่ Software > Select PHP Version แล้วคลิก PHP Options เพื่อปรับค่า memory_limit ให้เหมาะสม ค่าแนะนำสำหรับ WordPress ทั่วไปคือ 256M หากตั้งสูงเกินไปโดยไม่จำเป็น จะทำให้ Physical Memory limit ถูกกิน

; PHP Options ที่ควรตั้งค่าผ่าน cPanel > PHP Options
memory_limit = 256M
max_execution_time = 60
upload_max_filesize = 64M
post_max_size = 64M
max_input_vars = 3000

3. จัดการ Cron Job ให้ไม่ทำงานพร้อมกัน

ถ้าคุณมี cron job หลายตัว ควรตั้งเวลาให้ห่างกัน เช่น ไม่ให้ทำงานพร้อมกันในนาทีที่ 0 ของทุกชั่วโมง เพราะจะทำให้ CPU spike พร้อมกัน

# ตัวอย่าง Cron Job ที่ดี: กระจายเวลาไม่ให้ชนกัน
# Backup database ทุกวัน เวลา 02:00
0 2 * * * php /home/username/public_html/backup.php

# Clear cache ทุกชั่วโมง แต่เริ่มที่นาทีที่ 15
15 * * * * php /home/username/public_html/wp-cron.php

# Send newsletter ทุกวันจันทร์ เวลา 09:30
30 9 * * 1 php /home/username/public_html/newsletter.php
Tip: WordPress มี WP-Cron ที่ทำงานเมื่อมีคนเข้าเว็บ ซึ่งทำให้ CPU spike เป็นช่วงๆ แนะนำให้ปิด WP-Cron ใน wp-config.php แล้วตั้ง Real Cron แทน โดยเพิ่ม define('DISABLE_WP_CRON', true); และตั้ง cron ให้เรียก wp-cron.php ทุก 5 นาที

4. Block Bad Bots ผ่าน .htaccess

Bot ที่ไม่ดีสามารถกิน Entry Process จนเต็มโดยไม่ได้ทำให้เว็บคุณได้ประโยชน์ เพิ่ม rule ต่อไปนี้ใน .htaccess เพื่อ block bot ที่เป็นภาระ

# Block bad bots ใน .htaccess
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (AhrefsBot|SemrushBot|DotBot|MJ12bot|BLEXBot) [NC]
RewriteRule .* - [F,L]

# หรือ block by IP ถ้ารู้ IP ที่ spam
Order Deny,Allow
Deny from 192.168.100.0/24

ตรวจสอบว่า Resource Usage ทำงานถูกต้อง

ก่อนสรุปว่าเว็บคุณใช้ resource สูงจริง ควรทำการทดสอบเพิ่มเติมผ่านเครื่องมือใน cPanel ดังนี้

# 1. ดู Error Log ล่าสุด 50 บรรทัด
# cPanel > Logs > Error Log
# ค้นหา "Resource temporarily unavailable" หรือ "508"

# 2. ตรวจ Apache Status ผ่าน cPanel > Server Information
# ดูที่ Requests/sec และ KB/second

# 3. ทดสอบ PHP Memory usage ด้วย phpinfo()
# สร้างไฟล์ test.php ชั่วคราว แล้วลบทิ้งหลังใช้งาน
<?php phpinfo(); ?>
# เปิดเว็บ yoursite.com/test.php แล้วค้นหา "memory_limit"

# 4. ตรวจสอบขนาด MySQL Table ที่ทำให้ IO สูง
# cPanel > phpMyAdmin > เลือก Database > Status Tab
# ดูที่ Questions per second และ Table scans

# 5. ดู Disk Usage ว่ามี Log ไฟล์ใหญ่ผิดปกติไหม
# cPanel > Files > Disk Usage
# ดูโฟลเดอร์ logs/ ควรมีขนาดไม่เกิน 1GB
Tip: ถ้า Resource Usage แสดงค่าสูงตลอดแม้ traffic น้อย ให้ตรวจ Error Log ก่อนเลย บ่อยครั้งพบว่ามี PHP script ที่วน loop ไม่สิ้นสุด หรือ WordPress plugin ที่ทำ external request ที่ timeout ซ้ำๆ ทำให้ Entry Process ค้างอยู่นาน

แก้ปัญหาที่พบบ่อย

Error: "508 Resource Limit Is Reached"

เกิดเมื่อ Entry Process ถึง limit ที่แพ็กเกจกำหนด ผู้เยี่ยมชมจะเห็นหน้าขาวพร้อมข้อความ 508 วิธีแก้เบื้องต้นคือเปิด Cache ให้ WordPress ทันที หากใช้ LiteSpeed Server ให้ติดตั้ง LiteSpeed Cache plugin แล้วเปิด Full Page Cache เพราะจะช่วยลด Entry Process ลงได้มากที่สุด

ถ้า 508 เกิดขึ้นชั่วคราวแล้วหาย มักเกิดจาก traffic spike หรือ bot รุมเว็บ แต่ถ้าเกิดตลอดเวลาแม้ traffic ปกติ ควรพิจารณาอัพเกรดแผน Hosting

Error: "CPU Limit Reached" หรือเว็บช้าผิดปกติ

ดู Resource Usage กราฟ CPU ถ้า spike ถึง 100% ทุก 5-10 นาที อาจเป็น cron job ที่ทำงานรัว ให้ไปที่ cPanel > Advanced > Cron Jobs แล้วตรวจสอบว่า cron ใดทำงานในช่วงเวลาที่ CPU spike ตรงกันหรือไม่

อีกสาเหตุหนึ่งคือ WordPress plugin ที่ query database ทุกครั้งที่โหลดหน้า ให้ทดลอง Deactivate plugin ทีละตัวแล้วดูว่า CPU ลดลงไหม plugin ที่มักเป็นตัวร้ายคือ plugin SEO, plugin backup, และ plugin security ที่ scan ทุก request

Error: "Memory Limit Exhausted" หรือ PHP Fatal error

เกิดเมื่อ script ใช้ RAM เกิน memory_limit ที่ตั้งไว้ Error message ใน log จะเป็น: Fatal error: Allowed memory size of XXX bytes exhausted

ให้เพิ่ม memory_limit ผ่าน cPanel > PHP Options หรือเพิ่มในไฟล์ .htaccess

# เพิ่มใน .htaccess เพื่อ override PHP memory limit
php_value memory_limit 256M

# หรือเพิ่มใน wp-config.php สำหรับ WordPress
define( 'WP_MEMORY_LIMIT', '256M' );

Error: IO Usage สูงผิดปกติ ดิสก์ทำงานหนัก

IO สูงมักเกิดจาก WordPress plugin ที่เขียน log ไฟล์ขนาดใหญ่ หรือ backup plugin ที่ทำงานตอนกลางวัน ให้ตรวจสอบโฟลเดอร์ wp-content/uploads/ และ wp-content/wflogs/ (Wordfence log) ว่ามีไฟล์ขนาดใหญ่ผิดปกติไหม รวมถึงตรวจ MySQL slow query ด้วย การทำ MySQL Index ที่ถูกต้องสามารถลด IO ได้อย่างมาก

Error: IOPS Limit Reached

IOPS สูงมักเกิดจากการที่ WordPress โหลด PHP ไฟล์หลายร้อยไฟล์ต่อ request โดยไม่มี opcode cache ให้ตรวจสอบว่าโฮสต์เปิด OPcache ให้คุณหรือไม่ ผ่าน cPanel > PHP Options แล้วตรวจสอบว่า opcache.enable เปิดอยู่ OPcache จะ cache PHP bytecode ในหน่วยความจำ ทำให้ลดการอ่านไฟล์จากดิสก์ได้อย่างมาก


คำถามที่พบบ่อย

Q: Resource Usage แสดงข้อมูลล่าช้าหรือเปล่า?

A: ใช่ กราฟใน Resource Usage อัพเดตข้อมูลทุก 5-15 นาที ดังนั้นถ้าเว็บเพิ่งช้าไปและมาดู Resource Usage ทันที อาจยังไม่เห็นค่าที่ spike ในทันที ให้รอสักครู่แล้วรีเฟรชหน้า หรือดูที่ Snapshot ตารางด้านล่างซึ่งบางครั้งแม่นยำกว่ากราฟ

Q: ค่า Entry Process เต็มอยู่ตลอด ควรอัพเกรดแผนไหม?

A: ก่อนอัพเกรดควรลอง 2 วิธีนี้ก่อน คือ (1) เปิด Cache ให้ WordPress และ (2) ตรวจสอบว่ามี bot ที่ไม่ดีรุมเว็บอยู่ไหม ถ้าทำทั้งสองอย่างแล้ว Entry Process ยังเต็มบ่อย แสดงว่า traffic จริงของคุณมากเกินกว่าแผนปัจจุบันจะรองรับได้ ให้ติดต่อโฮสต์เพื่อขอดูตัวเลขจริงและเปรียบเทียบแผนที่สูงขึ้น

Q: มีวิธีรับ Alert เมื่อ Resource ใกล้เต็มไหม?

A: cPanel ไม่มี built-in alert สำหรับ Resource Usage โดยตรง แต่บางโฮสต์จะส่ง email อัตโนมัติเมื่อ resource เกิน limit ถ้าต้องการ monitor อย่างต่อเนื่อง สามารถใช้ cron job เรียก script ที่ตรวจสอบ error log แล้วส่ง email แจ้งเตือน หรือใช้บริการ Uptime Monitor ภายนอกที่ alert เมื่อเว็บตอบสนองช้า