WordPress ใช้หน่วยความจำสูง? วิธีตรวจและแก้ปัญหา

เมื่อ WordPress ใช้หน่วยความจำสูง เว็บไซต์อาจช้า แสดงข้อผิดพลาด หรือทำงานบางอย่างไม่สำเร็จ แต่คำว่า “หน่วยความจำ” อาจหมายถึงคนละค่า ได้แก่ หน่วยความจำที่บัญชีโฮสติ้งใช้จริง และขีดจำกัดหน่วยความจำ PHP ที่กำหนดต่อการทำงานหนึ่งครั้ง

การเพิ่มขีดจำกัด PHP อย่างเดียวไม่ได้เพิ่ม RAM ให้เซิร์ฟเวอร์ และอาจไม่ช่วยหากสาเหตุคือปลั๊กอินหรือคำขอที่ทำงานหนัก แนวทางของ ComSiam คือแยกค่าทั้งสองก่อน แล้วจึงตรวจสาเหตุที่สัมพันธ์กับอาการ

❶ แยกหน่วยความจำเซิร์ฟเวอร์กับ PHP Memory Limit

หน่วยความจำเซิร์ฟเวอร์คือทรัพยากรที่บัญชีโฮสติ้งหรือเซิร์ฟเวอร์ใช้ ส่วน PHP Memory Limit คือขีดจำกัดที่กำหนดว่าการทำงานของ PHP หนึ่งคำขอใช้หน่วยความจำได้มากเพียงใด

① หน่วยความจำของบัญชีโฮสติ้งใกล้เต็ม

ตรวจจากแผงควบคุมโฮสติ้งว่ามีการใช้หน่วยความจำสูงหรือชนขีดจำกัดหรือไม่ หากหลายเว็บไซต์หรือหลายคำขอใช้ทรัพยากรร่วมกัน ค่ารวมอาจสูงแม้ PHP Memory Limit ของเว็บจะยังไม่เต็ม

② พบข้อความ PHP ใช้หน่วยความจำเกิน

หากมีข้อความแจ้งว่าหน่วยความจำที่ PHP อนุญาตไม่เพียงพอ ให้จดข้อความและเวลาที่เกิด แล้วตรวจว่าเกิดขณะทำอะไร เช่น อัปโหลดภาพ นำเข้าสินค้า หรือบันทึกหน้าเว็บ

③ อย่าสับสนระหว่างสองค่านี้

การเพิ่ม PHP Memory Limit อาจทำให้คำขอหนึ่งใช้หน่วยความจำได้มากขึ้น แต่ไม่ได้เพิ่มทรัพยากรรวมของแพ็กเกจโฮสติ้ง หากบัญชีใช้ RAM เต็มอยู่แล้ว เว็บอาจยังช้าหรือถูกจำกัดเหมือนเดิม

❷ ตรวจช่วงเวลาและงานที่ทำให้หน่วยความจำเพิ่ม

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

① จดเวลาและ URL

บันทึกหน้าเว็บหรือหลังบ้านที่เกิดปัญหา พร้อมเวลาที่พบ เพื่อเปรียบเทียบกับกราฟทรัพยากรและบันทึกของโฮสติ้ง

② ตรวจข้อความผิดพลาด

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

③ ตรวจการแจ้งเตือนจากผู้ให้บริการ

ดูว่ามีการแจ้งเตือนเกี่ยวกับ RAM, CPU หรือการจำกัดทรัพยากรหรือไม่ หากไม่มีข้อมูลเพียงพอ ให้สอบถามผู้ให้บริการพร้อมรายละเอียดที่บันทึกไว้

❸ ตรวจปลั๊กอิน ธีม และงานที่ทำงานหนัก

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

① ตรวจการเปลี่ยนแปลงล่าสุด

หากเริ่มมีปัญหาหลังติดตั้งหรืออัปเดต ให้ตรวจรายการนั้นก่อน โดยทดสอบบนเว็บไซต์สำรองหากทำได้

② ใช้เครื่องมือวิเคราะห์ตามความจำเป็น

เครื่องมือตรวจ WordPress อาจช่วยดูการทำงานของ PHP และปลั๊กอิน แต่ควรใช้ในช่วงวินิจฉัยและปิดเมื่อไม่ต้องใช้ เพราะเครื่องมือตรวจเองอาจเพิ่มภาระ

③ ทดสอบทีละรายการ

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

❹ ลดภาระจากงานนำเข้าและประมวลผลจำนวนมาก

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

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

❺ ตรวจภาพและข้อมูลที่โหลดในหน้าเดียว

หน้าเว็บที่มีภาพจำนวนมาก ตารางข้อมูลขนาดใหญ่ หรือรายการสินค้าหลายรายการ อาจเพิ่มภาระในการประมวลผล ควรแยกตรวจว่าปัญหาเกิดเฉพาะหน้าที่มีข้อมูลจำนวนมากหรือไม่

① ลดขนาดภาพก่อนอัปโหลด

ภาพขนาดใหญ่เพิ่มภาระในการจัดเก็บและสร้างภาพหลายขนาด ตรวจขนาดภาพให้เหมาะกับตำแหน่งใช้งาน

② จำกัดจำนวนรายการที่แสดงพร้อมกัน

หน้าร้านค้า ผลการค้นหา หรือหน้ารายงานอาจโหลดข้อมูลมากเกินไป ลองลดจำนวนรายการต่อหน้าโดยไม่กระทบการใช้งาน

③ ตรวจเครื่องมือสร้างหน้าเว็บ

หากหน้าเว็บมีองค์ประกอบหรือส่วนประกอบจำนวนมาก ให้ตรวจว่ามีส่วนใดซ้ำหรือไม่จำเป็น และทดสอบการลดลงทีละส่วน

❻ ควรเพิ่ม PHP Memory Limit เมื่อใด

การเพิ่ม PHP Memory Limit อาจเหมาะเมื่อพบข้อความชัดเจนว่าคำขอชนขีดจำกัด และตรวจแล้วว่างานนั้นจำเป็นต้องใช้หน่วยความจำเพิ่ม เช่น การประมวลผลภาพหรือการนำเข้าข้อมูล

ก่อนปรับ ให้ตรวจว่าแพ็กเกจโฮสติ้งรองรับค่าที่ต้องการหรือไม่ และเปลี่ยนผ่านแผงควบคุมหรือคำแนะนำจากผู้ให้บริการ หากไม่แน่ใจให้สอบถามโฮสติ้งก่อน การแก้ไฟล์ตั้งค่าระบบเองอาจทำให้เว็บเข้าไม่ได้หากระบุค่าผิด

ComSiam แนะนำให้เพิ่มขีดจำกัดเฉพาะเมื่อมีหลักฐาน และตรวจค่าหน่วยความจำรวมของแพ็กเกจควบคู่กัน หากเว็บใช้ทรัพยากรใกล้เต็มอยู่แล้ว การเพิ่มขีดจำกัดต่อคำขออาจทำให้ปัญหาหนักขึ้น

❼ ใช้แคชและ Object Cache อย่างเหมาะสม

แคชอาจช่วยลดการประมวลผลหน้าเดิมซ้ำ ส่วน Object Cache อาจช่วยลดการเรียกข้อมูลเดิมจากฐานข้อมูลบ่อยครั้ง ทั้งสองอย่างต้องตั้งค่าให้เข้ากับโฮสติ้งและเว็บไซต์

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

❽ ขั้นตอนแก้ปัญหาหน่วยความจำสูง

① สำรองไฟล์และฐานข้อมูล

เตรียมวิธีย้อนกลับก่อนเปลี่ยนปลั๊กอินหรือการตั้งค่า

② ระบุว่าเป็น RAM ของโฮสติ้งหรือ PHP Memory Limit

ตรวจแผงควบคุม ข้อความผิดพลาด และข้อมูลจากผู้ให้บริการ

③ ระบุงานและหน้าที่เกิดปัญหา

จดเวลา URL และขั้นตอนที่ทำก่อนเกิดอาการ

④ ตรวจปลั๊กอิน งานนำเข้า และหน้าที่ใช้ข้อมูลมาก

แก้ทีละสาเหตุและทดสอบซ้ำ

⑤ เพิ่มขีดจำกัดเฉพาะเมื่อจำเป็น

สอบถามผู้ให้บริการก่อนปรับ และติดตามการใช้ทรัพยากรหลังเปลี่ยน

⑥ ตรวจการทำงานของเว็บไซต์

ทดสอบหน้าเว็บ หลังบ้าน แบบฟอร์ม และระบบร้านค้าหลังแก้ไข

❾ เมื่อไรควรติดต่อผู้ให้บริการโฮสติ้ง

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

ถามให้ชัดว่าค่าที่เห็นคือหน่วยความจำของบัญชีหรือขีดจำกัด PHP และแพ็กเกจรองรับการเพิ่มค่าหรือไม่ หากทรัพยากรที่มีไม่พอกับงานปัจจุบัน ค่อยประเมินแพ็กเกจใหม่จากข้อมูลการใช้งานจริง

สรุป: ตรวจให้รู้ว่าหน่วยความจำส่วนใดกำลังเต็ม

เมื่อ WordPress ใช้หน่วยความจำสูง ให้แยกก่อนว่าเป็น RAM ของโฮสติ้งหรือ PHP Memory Limit แล้วตรวจเวลา หน้าเว็บ ปลั๊กอิน และงานที่ทำให้เกิดอาการ แบ่งงานหนักเป็นชุดเล็ก ใช้แคชเมื่อเหมาะสม และเพิ่มขีดจำกัดเฉพาะเมื่อมีหลักฐานรองรับ

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