Resource Limit คือเพดานทรัพยากรที่ Shared Hosting กำหนดให้แต่ละบัญชี เช่น CPU, หน่วยความจำ, จำนวน process ที่ทำงานพร้อมกัน และความเร็วอ่านเขียนดิสก์ เพื่อไม่ให้เว็บใดเว็บหนึ่งใช้ทรัพยากรจนกระทบเว็บอื่นบนเซิร์ฟเวอร์เดียวกัน เมื่อเว็บใช้ชนเพดาน ผู้เข้าชมจะเห็นหน้าเว็บช้าลงหรือขึ้น error อย่าง 508 Resource Limit Is Reached
คำแนะนำที่พบบ่อยคือ "อัปเกรดแพ็กเกจ" ซึ่งบางครั้งถูก แต่หลายกรณีต้นเหตุคือบอท, cron หรือปลั๊กอินตัวเดียว บทความนี้อธิบายวิธีอ่านค่าแต่ละตัวเพื่อแยกให้ออกว่าปัญหาอยู่ตรงไหน
Resource Limit ทำงานอย่างไร
ระบบที่นิยมใช้จำกัดทรัพยากรบน Shared Hosting คือ CloudLinux ซึ่งแยกแต่ละบัญชีไว้ใน Lightweight Virtual Environment (LVE) แต่ละ LVE มีเพดานของตัวเอง เมื่อชนเพดาน ระบบจะชะลอหรือปฏิเสธ request ของบัญชีนั้น แทนที่จะปล่อยให้ทั้งเซิร์ฟเวอร์ช้า รายละเอียดของแต่ละค่าอยู่ในเอกสาร CloudLinux
[ตรวจสอบ: ยืนยันว่า Shared Hosting ของ THAI DATA HOSTING ใช้ CloudLinux หรือระบบจำกัดทรัพยากรแบบอื่น และชื่อเมนูที่ใช้ดูกราฟ]
ความหมายของค่า Resource Limit แต่ละตัว
| ค่า | ความหมาย | อาการเมื่อชนเพดาน |
|---|---|---|
| SPEED (CPU) | สัดส่วน CPU ที่บัญชีใช้ได้ | เว็บช้าลงทุกหน้า แต่ยังเปิดได้ |
| PMEM | หน่วยความจำจริงที่ใช้ได้ | process ถูกปิด, error 500 หรือ 503 |
| EP (Entry Processes) | จำนวน request ที่เข้า PHP พร้อมกัน | error 508 Resource Limit Is Reached |
| NPROC | จำนวน process ทั้งหมดของบัญชี | cron หรือ SSH เริ่มงานใหม่ไม่ได้ |
| IO | ความเร็วอ่านเขียนดิสก์ (KB/s) | หน้าเว็บค้างเป็นช่วง โดยเฉพาะตอน backup |
| IOPS | จำนวนครั้งอ่านเขียนดิสก์ต่อวินาที | เว็บที่มีไฟล์เล็กจำนวนมากช้าลง |
จุดที่คนเข้าใจผิดบ่อยคือ EP ไม่ใช่จำนวนผู้เข้าชมพร้อมกัน แต่คือจำนวน request ที่กำลังประมวลผลอยู่ในขณะเดียวกัน หน้าที่โหลดจาก cache ใช้ EP แค่เสี้ยววินาที ส่วนหน้าที่ query หนักอาจถือ EP ไว้หลายวินาที เว็บที่ช้าจึงชน EP ง่ายกว่าเว็บที่เร็ว แม้จำนวนผู้เข้าชมเท่ากัน
ขั้นตอนที่ 1: ดูกราฟว่าชน Resource Limit ตัวไหน
แผงควบคุมที่ใช้ CloudLinux จะมีหน้าแสดงการใช้ทรัพยากรย้อนหลัง ให้ดูสองอย่าง คือ ค่าไหนแตะเพดาน (Faults) และเกิดช่วงเวลาไหน
- ชนเป็นช่วงเวลาเดิมทุกวัน: มักเป็น cron, backup หรือการ sync ที่ตั้งเวลาไว้
- ชนแบบสุ่มตลอดวัน: มักเป็นบอทหรือการโจมตีแบบ brute force
- ชนเฉพาะช่วงคนเข้าเยอะ: ทรัพยากรไม่พอสำหรับ traffic จริง หรือหน้าเว็บไม่ได้ cache
ขั้นตอนที่ 2: หาว่าใครเรียกเว็บตอนชน Resource Limit
เปิด access log ในช่วงเวลาเดียวกับที่กราฟแตะเพดาน แล้วนับว่า request มาจาก IP และ path ไหนมากที่สุด
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -20
ต้นเหตุที่พบบ่อยบนเว็บ WordPress ได้แก่
xmlrpc.phpและwp-login.phpถูกยิง brute forcewp-cron.phpถูกเรียกทุก request ช่วงคนเข้าเยอะadmin-ajax.phpจากปลั๊กอินที่ poll ข้อมูลทุกไม่กี่วินาที- บอทของเครื่องมือ SEO และ AI crawler ที่ไล่เก็บทุกหน้าโดยไม่จำกัดความเร็ว
