CASE STUDY · ร้านชาเขียวมัทฉะออนไลน์ · WooCommerce

Matchazuki

ร้านค้าออนไลน์ที่จัดแฟลชเซลปล่อยสต๊อกจำกัดตามเวลา เว็บช้าและลูกค้าสั่งซื้อไม่ได้ในนาทีสำคัญ ต้องหาคอขวดจริงก่อนแก้

ระบบที่เกี่ยวข้อง: WordPress · WooCommerce · WPML · Nginx · Redis · Cloudflare

หน้าเว็บ Matchazuki
เปิดเว็บไซต์จริง ↗

โจทย์

  • ช่วงแฟลชเซล ลูกค้าจำนวนมากรีเฟรชพร้อมกัน เว็บช้าจนสั่งซื้อไม่ทันและมีคำร้องเรียนตามมา
  • ระบบหลังบ้านของลูกค้าส่งสต๊อกเข้ามาผ่าน 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 แทนการเดาว่า 'เซิร์ฟเวอร์ไม่พอ'
  • ผลเชิงตัวเลขจะสรุปหลังรอบขายถัดไปที่วัดได้จริง ไม่ใส่ตัวเลขล่วงหน้า

ยังทำงานต่อเนื่อง ติดตามผลทุกรอบแฟลชเซล