ในช่วงหลายเดือนที่ผ่านมา เรารู้สึกว่าเว็บไซต์ของเราเอง – wpml.org – ทำงานช้าลง ในตอนแรก เราใช้วิธีที่เด็ดขาดโดยการอัปเกรดเซิร์ฟเวอร์ เมื่อวิธีนี้ไม่ได้ผล เราจึงตั้งใจและวิเคราะห์ปัญหาอย่างจริงจัง ผลลัพธ์ที่ได้คือเวอร์ชันที่เผยแพร่ในวันนี้ ซึ่งช่วยลดภาระของ CPU และเวลาในการตอบสนองลงได้ถึง 70%
สิ่งที่เราได้เรียนรู้เกี่ยวกับการวิเคราะห์ประสิทธิภาพ
ประสิทธิภาพเป็นสิ่งสำคัญมากสำหรับเราเช่นกัน เราได้ทำการทดสอบหน่วยความจำ การสืบค้นข้อมูล และเวลา CPU ของ WPML มาหลายปีแล้ว และได้ทำการปรับปรุงในทุกเวอร์ชันที่เผยแพร่ สิ่งที่เราได้เรียนรู้จากการพัฒนาในรอบนี้คือ การทดสอบแบบคงที่ไม่ได้แสดงให้เห็นถึงปัญหาที่แท้จริงเสมอไป
วิธีการที่เราใช้ทดสอบประสิทธิภาพจนถึงตอนนี้คือ:
- สร้างฐานข้อมูลขนาดใหญ่ที่มีโพสต์ ข้อมูลเมตาของโพสต์ หมวดหมู่ และผู้ใช้จำนวนมาก
- สร้างรายการของหน้าที่ "หนัก" กว่า
- โหลดหน้าเหล่านั้นหลาย ๆ ครั้ง วัดเวลาที่ใช้ในการโหลด และจัดทำโปรไฟล์
สิ่งนี้แสดงให้เราเห็นถึงส่วนหน้าเว็บไซต์และหน้าจัดการเว็บไซต์ที่เราต้องแก้ไขข้อบกพร่องและเพิ่มประสิทธิภาพ เราตรวจสอบให้แน่ใจว่าได้ลดจำนวนการสืบค้นข้อมูล หลีกเลี่ยงการสืบค้นข้อมูลที่ใช้เวลานาน และเขียนโค้ด PHP ที่มีประสิทธิภาพ
แล้วมีอะไรที่ขาดหายไป
WordPress และ WPML มีความซับซ้อนมากกว่า "การร้องขอหน้าและรอให้โหลด" เล็กน้อย ทุกอย่างเกิดขึ้นผ่านฐานข้อมูล ซึ่งเป็นทรัพยากรที่ใช้ร่วมกัน สิ่งที่ผู้เยี่ยมชม A ทำกับฐานข้อมูลอาจส่งผลต่อประสบการณ์ที่ผู้เยี่ยมชม B ได้รับ
เพื่อทำความเข้าใจปัญหาคอขวดเหล่านี้ เราได้ติดตั้งเครื่องมือที่เรียกว่า Appoptics บนเว็บไซต์ที่ใช้งานจริงของเรา เครื่องมือนี้ช่วยให้เราสามารถวัดได้ว่าฟังก์ชันและการสืบค้นข้อมูลใดใช้เวลามาก เพื่อให้เราสามารถวิเคราะห์สาเหตุได้
การปรับปรุงประสิทธิภาพที่เกิดขึ้นจริง
เราพบว่าการทำงานที่ดูเหมือนไม่มีอันตรายอย่างหนึ่งในการแปลสตริงมีความขัดแย้งด้านทรัพยากรอย่างมากกับการสืบค้นข้อมูลที่เกิดขึ้นบ่อยครั้งไปยังตารางตัวเลือกจากปลั๊กอินอื่น หากคุณเรียกใช้คำสั่งนั้นเพียง 1 ล้านครั้ง คุณจะไม่รู้สึกถึงปัญหาใด ๆ อย่างไรก็ตาม เมื่อหน้าอื่น ๆ จำเป็นต้องเข้าถึงตารางตัวเลือก หน้าเหล่านั้นจะต้องรอจนกว่าสตริงจะไม่ได้เข้าถึงตารางดังกล่าว รายการคำขอที่รอดำเนินการจะเพิ่มขึ้นจนล้นฐานข้อมูล และทำให้เกิดความวุ่นวายขึ้น

เมื่อดูที่กราฟ คุณจะเห็นว่าความพยายามส่วนใหญ่ของเซิร์ฟเวอร์ของเราถูกใช้ไปกับฐานข้อมูล (ตารางนั้นที่คอยล็อกและปลดล็อกอยู่เสมอ) คุณอาจเดาได้ว่าเราใช้การแก้ไขในเวลาใด
แต่ฉันมีปัญหาด้านประสิทธิภาพอื่น ๆ คุณสามารถแก้ไขได้หรือไม่
สิ่งที่เราพบจะช่วยได้อย่างแน่นอน ไม่เพียงแต่กับ wpml.org เท่านั้น แต่ยังรวมถึงเว็บไซต์ที่มีการใช้งานสูงอื่น ๆ อีกมากมายที่เรียกใช้ WPML หากคุณมีเว็บไซต์ที่มีภาระงานน้อยมาก คุณแทบจะไม่รู้สึกถึงการปรับปรุงนี้เลย การปรับปรุงนี้จะส่งผลต่อเว็บไซต์ที่มีการทำงานพร้อมกันจำนวนมากและมีผู้คนทำสิ่งต่าง ๆ มากมายเท่านั้น
เป็นไปได้ว่าเว็บไซต์อื่น ๆ สามารถใช้การเพิ่มประสิทธิภาพอื่น ๆ ได้ ตอนนี้เราได้เรียนรู้แล้วว่าวิธีที่ดีที่สุดในการทำงานนี้คือการติดตั้งการจัดทำโปรไฟล์บนเว็บไซต์ที่ใช้งานจริง ซึ่งประสบปัญหาด้านประสิทธิภาพ แม้ว่าเราจะได้รับสำเนาฐานข้อมูลของคุณ แต่เราก็ไม่สามารถจำลองปริมาณการเข้าชมของคุณได้ นี่คือเหตุผลที่การตรวจสอบรอบก่อนหน้านี้ทั้งหมดของเราไม่พบปัญหานี้โดยเฉพาะ
อย่างไรก็ตาม การปรับปรุงประสิทธิภาพในรอบนี้ของเราไม่ได้เปิดเผยปัญหาคอขวดใน WPML เท่านั้น เราได้แก้ไขสิ่งที่เราพบใน WPML แต่เราสังเกตเห็นปัญหาที่รุนแรงในส่วนอื่น ๆ ด้วย บางส่วนเราได้แก้ไขด้วยตนเอง และบางส่วนเราได้เพิ่มประสิทธิภาพผ่านฐานข้อมูล
หากคุณสนใจ โปรดแจ้งให้เราทราบ แล้วเราจะช่วยคุณติดตั้งการวิเคราะห์ประสิทธิภาพบนเว็บไซต์ที่ใช้งานจริงของคุณ จากนั้นเรายินดีเป็นอย่างยิ่งที่จะช่วยคุณวิเคราะห์ผลลัพธ์ หากเราพบสิ่งใดใน WPML เราจะแก้ไขให้ มีโอกาสสูงที่เว็บไซต์ที่มีปัญหาด้านประสิทธิภาพจะพบปัญหาจำนวนหนึ่งที่มาจากแหล่งที่ไม่คาดคิด
มีอะไรใหม่อีกบ้างใน WPML 4.2.6
ตัวหลักของ WPML 4.2.6
- เพิ่มฟิลเตอร์ wpml_post_edit_meta_box_priority เพื่อเปลี่ยนลำดับความสำคัญของกล่องข้อมูลเมตาสำหรับการแก้ไขโพสต์ของ WPML
- แก้ไขปัญหาเกี่ยวกับการอัปเกรดปลั๊กอินในกรณีที่มีการติดตั้งในโฟลเดอร์ย่อย โดยใช้ URL ของเว็บไซต์เสมอ
- บันทึกประกาศเฉพาะเมื่อจำเป็นเพื่อลดการเขียนเพิ่มเติมลงในตาราง wp_options
- แก้ไขปัญหาด้านความปลอดภัยเกี่ยวกับลิงก์ตัวสลับภาษา
WPML การแปลสตริง 2.10.4
- แก้ไขปัญหาเกี่ยวกับการนำเข้าไฟล์ mo ของการแปลสตริง เพื่อไม่ให้ตาราง wp_option ได้รับการอัปเดตโดยไม่จำเป็น
WPML การจัดการการแปล 2.8.5
- ปรับปรุงรูปแบบของตัวควบคุมการแบ่งหน้าในหน้างานแปล
- แก้ไขปัญหาเกี่ยวกับการมอบหมายนักแปลในหน้างานแปลเมื่อภาษาของหน้าจัดการเว็บไซต์แตกต่างจากภาษาอังกฤษ
- แก้ไขเนื้อหาที่ไม่ถูกต้องของคอลัมน์ "แปลโดย" เมื่อภาษาของหน้าจัดการเว็บไซต์แตกต่างจากภาษาอังกฤษ
WPML Media Translation 2.5.2
- บันทึกประกาศเฉพาะเมื่อจำเป็นเพื่อลดการเขียนเพิ่มเติมลงในตาราง wp_options
WPML CMS Nav 1.5.1
- ปรับปรุงประสิทธิภาพโดยการล้างแคชเฉพาะเมื่อเหมาะสมเท่านั้น
ดาวน์โหลดและอัปเดต
เช่นเคย คุณจะได้รับการอัปเดตนี้โดยอัตโนมัติสำหรับเว็บไซต์ที่ลงทะเบียนทั้งหมดของคุณ คุณสามารถเข้าสู่ระบบบัญชี WPML ของคุณเพื่อดาวน์โหลดและติดตั้งด้วยตนเองได้เสมอ
เราขอแนะนำให้ทำการสำรองข้อมูลก่อนที่จะอัปเดตสิ่งใด ๆ ในเว็บไซต์ของคุณ
คำติชม คำถาม คำแนะนำ
ตอนนี้เว็บไซต์ของเราทำงานเร็วขึ้นมากแล้ว แต่เราอยากทราบเกี่ยวกับเว็บไซต์ของคุณ โปรดแสดงความคิดเห็นของคุณและเราจะติดต่อกลับไป

