โจทย์
- ช่วงแฟลชเซล ลูกค้าจำนวนมากรีเฟรชพร้อมกัน เว็บช้าจนสั่งซื้อไม่ทันและมีคำร้องเรียนตามมา
- ระบบหลังบ้านของลูกค้าส่งสต๊อกเข้ามาผ่าน WooCommerce REST API ก่อนเวลาขาย ทำให้โหลดซ้อนกัน
- หน้าสินค้าโหลดช้า มี PHP warning ใน child theme และปลั๊กอิน และเคยมีปัญหาที่อยู่จัดส่งหายตอน checkout
สิ่งที่ทำ
- อ่าน slow log และ access log ของรอบขายจริง เพื่อแยกว่าคอขวดอยู่ที่ปลั๊กอินไหน ไม่เดา
- พบว่าปลั๊กอินจัดการไฟล์บนคลาวด์เรียก cache ทุกครั้งที่อ่าน meta, cart fragments, การสแกนความปลอดภัยที่รันระหว่างขาย และ REST ภายในที่ไม่ได้ cache เป็นตัวถ่วงหลัก
- ตั้ง rate limit ที่ Nginx เฉพาะ API เขียนสินค้า, ปรับ MySQL และ PHP-FPM ให้เหมาะกับเครื่อง 8 CPU / 16 GB
- เขียน MU plugin ปรับหน้าสินค้าให้โหลด variation แบบ AJAX, แก้ PHP warning, ล็อกเว็บทดสอบด้วยรหัสผ่าน
- ออกแบบปลั๊กอินปล่อยสต๊อกตามเวลา เพื่อให้สต๊อกปรากฏพร้อมกันตอนเริ่มขายโดยไม่ต้องเขียน API ถล่มก่อนเวลา
- ทุกไฟล์และ config ที่แก้มีสำเนา .bak พร้อมเวลา ย้อนกลับได้ทันที
สิ่งที่ยืนยันได้
- เจ้าของร้านได้รายงานสาเหตุที่ตรวจพบจริงพร้อมหลักฐานจาก log แทนการเดาว่า 'เซิร์ฟเวอร์ไม่พอ'
- ผลเชิงตัวเลขจะสรุปหลังรอบขายถัดไปที่วัดได้จริง ไม่ใส่ตัวเลขล่วงหน้า
ยังทำงานต่อเนื่อง ติดตามผลทุกรอบแฟลชเซล

