สินค้าจากร้าน Elec2rak

วิเคราะห์และวิธีแก้ปัญหา PrestaShop Disk Full + MySQL Crash (ฉบับอัปเดต: ปิด Stat Module อย่างถูกต้อง)

ในระบบ PrestaShop + MySQL + Docker ปัญหา disk เต็มและ database crash มักไม่ได้เกิดจาก “ทราฟฟิกเยอะอย่างเดียว” แต่เกิดจาก ระบบเก็บสถิติ (Statistics Module) + Logging + MySQL binlog ทำงานพร้อมกันจนข้อมูลโตแบบควบคุมไม่ได้

🚨 จุดเริ่มต้นของปัญหา

อาการที่เกิดขึ้น:

  • MySQL ขึ้น error Out of disk space
  • InnoDB redo log เขียนไม่ได้
  • ps_connections_source โตผิดปกติ
  • binlog ขนาด ~1GB ต่อไฟล์
  • DB crash ตอน startup

💣 สาเหตุหลัก (อัปเดตเพิ่ม)

1. 📊 PrestaShop Statistics Module (ตัวสำคัญมาก)

PrestaShop มีระบบเก็บสถิติหลายตัว เช่น:

  • ps_metrics
  • ps_statsdata
  • ps_visitors
  • ps_connections
  • ps_connections_source

👉 ทุก module จะ:

  • log ทุก page view
  • track referrer
  • เก็บ session + IP + URL
  • เขียนลง database ตลอดเวลา

2. 📈 ปัญหาคือ “ทุก visit = หลาย DB writes”

ตัวอย่าง 1 page visit:

  • insert connection
  • insert source
  • update visitor stats
  • update dashboard metrics

👉 1 คน = หลาย query
👉 1,000 visitors = หลายหมื่น writes


 3. 🤖 Bot traffic ทำให้หนักขึ้น

  • Google bot
  • SEO crawler
  • spam bot

👉 ทำให้ stats โตเร็วมากแม้ไม่มีลูกค้าจริง


 4. 💥 MySQL binlog + stats = exponential growth

ทุก write จะถูก:

  • เขียน binlog
  • เขียน redo log
  • กระตุ้น temp table usage

👉 ส่งผลให้ disk เต็มเร็วมาก


 🛠️ วิธีแก้ (สำคัญที่สุด: ปิด Stat Module)

🟢 1. ปิด Stats ผ่าน Back Office

ไปที่:

👉 Advanced Parameters → Administration

แล้วปิด:

❌ Save page views
❌ Save visitor origin
❌ Save visits
❌ Enable statistics (ถ้ามี)


 🟢 2. Disable Statistics Modules (สำคัญมาก)

ไปที่:

👉 Modules → Module Manager

ค้นหาและปิด/ถอน:

  • ps_metrics (PrestaShop Metrics)
  • ps_googleanalytics
  • statsdata
  • sekeywords
  • ps_statstracker
  • dashactivity
  • dashtrends

👉 แนะนำ:

  • ถ้าไม่ใช้ → Uninstall เลยดีที่สุด
  • ถ้าจำเป็น → Disable อย่างเดียว

🟢 3. ปิด Connections Tracking (ตัวหลักของ DB บวม)

รัน SQL:

TRUNCATE ps_connections;
TRUNCATE ps_connections_source;

👉 ตารางนี้คือ “ตัวกิน disk ตัวจริง”


🟢 4. ปิด Stats Cron Job (ถ้ามี)

เช็ค:

/modules/ps_metrics/cron/
/modules/statsdata/

👉 disable cron เช่น:

  • refresh metrics
  • analytics sync
  • dashboard aggregation

🟢 5. ปิด Auto Stats ใน config (ระดับลึก)

ในบาง version:

define('_PS_STATS_', false);

หรือ disable module hooks:

  • actionPageView
  • actionCustomerAccountAdd
  • actionCartSave

⚙️ ผลลัพธ์หลังปิด Stats Module

หลังปิดจะได้:

  • ลด DB write 50–90%
  • binlog โตช้าลงมาก
  • ลด InnoDB load
  • disk usage เสถียรขึ้น
  • MySQL crash ลดลงอย่างชัดเจน

 🧠 Engineer Insight

ปัญหานี้ไม่ใช่ “เว็บคนเข้าเยอะ”

แต่คือ:

❗ PrestaShop Stats = Real-time database logging system ที่ไม่มี throttling

👉 ถ้าไม่ปิด = ระบบจะโตจน disk เต็มเสมอ


🛡️ Best Practiceสำหรับ Production

❌ ห้ามใช้:

  • internal stats module
  • DB-based analytics
  • connection tracking แบบ realtime

✔ ควรใช้:

  • Google Analytics / Matomo
  • CDN logs (Cloudflare)
  • external monitoring

🎯 สรุปสุดท้าย

✔ ปัญหาหลักไม่ได้มาจากผู้ใช้

✔ มาจาก Statistics Module + Logging system

✔ ทุก visit = database explosion

✔ แก้ถาวรต้อง “ปิด stats + clean tables + limit MySQL logging”

บทความที่เกี่ยวข้อง


โทร +669 4004 5061
อีเมล: [email protected]
Line ID: elec2rak
Social icon

ขณะนี้ผู้เยี่ยมชม 774 คน และสมาชิกออนไลน์ 0 คน

  • เนื้อหาที่เปิดอ่าน 1567984
  • Web Links 12