เวลาในการโหลดหน้าไม่สอดคล้องกัน


11

ฉันสนิทกับการทำโครงการวีโอไอพีขนาดใหญ่และหันมาให้ความสำคัญกับการปรับปรุงความเร็วของวีโอไอพี ในฐานะที่เป็นส่วนนำของฉันเป็นนักพัฒนา front-end ทำโครงการขนาดใหญ่ในบ้านนี้และหาสิ่งที่ฉันไป

ฉันมีวีโอไอพีสำหรับพัฒนาบนเซิร์ฟเวอร์เสมือนของ Media Temple ที่มี RAM 2GB เมื่อเร็ว ๆ นี้ฉันมีผลิตภัณฑ์มากถึง 600 รายการและมีคุณลักษณะที่แตกต่างกันประมาณ 25 รายการสำหรับแต่ละผลิตภัณฑ์ (รวมคุณสมบัติที่ไม่ซ้ำกันประมาณ 300 รายการ) และอาจมี 50 หมวดหมู่ ฉันลบสิ่งเหล่านี้ทั้งหมดเพื่อแก้ไขปัญหาความเร็วในการโหลดประมาณ 15 วินาที

อย่างไรก็ตามความเร็วในการโหลดของฉันยังคงยาวนานและไม่สอดคล้องกัน ฉันโหลดหน้าแรกของฉันใหม่ด้วย Firebug รายงาน 500ms สำหรับการตอบสนองและฉันโหลดอีกครั้งทันทีและรายงานมากกว่า 9 วินาที นี่เป็นปัญหาเซิร์ฟเวอร์หรือบางสิ่งบางอย่างกับ Magento หรือไม่? ฉันจะทำการทดสอบแบบนี้ได้อย่างไร

คำตอบ:


11

ก่อนอื่นคุณต้องตัดสินใจว่าคุณกำลังทำการทดสอบอะไรไม่ว่าจะเป็น PHP เวลาแสดงผลหรือเวลาในการโหลดหน้าเว็บจริง

ไม่ว่าในสถานการณ์ใดการใช้ firebug จะไม่น่าเชื่อถือเนื่องจากการเชื่อมต่ออินเทอร์เน็ตของคุณอาจเป็นคอขวดหรือเหตุผลที่ทำให้เกิดปัญหา

PHP Render Time

หากคุณต้องการที่จะดูว่าเวลาในการแสดงผลของ PHP นั้นมีการปรับปรุง / เปลี่ยนแปลงหรือไม่ - วิธีที่แม่นยำที่สุดคือการใช้เอาต์พุตจาก Magento Profiler

ในindex.php, uncomment

Varien_Profiler::enable();

จากนั้นใน

ผู้ดูแลระบบ> ระบบ> การกำหนดค่า> ผู้พัฒนา

ตรวจสอบให้แน่ใจว่าเปิดใช้งานตัวสร้างโปรไฟล์

คุณจะจบลงด้วยการส่งออกตารางที่ด้านล่างของทุกหน้า (front-end และ back-end) แบ่งเวลาในการโหลดหน้าเว็บที่วัดจากจุดMage::run()เริ่มต้น บรรทัดแรกจะระบุเวลาการเรนเดอร์ PHP ทั้งหมด (ภายใน Mage)

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

PHP เว็บเซิร์ฟเวอร์แสดงผลเวลา

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

เราใช้ยูทิลิตี้ของเราเองmage-perftest(สามารถดูข้อมูลเพิ่มเติมได้ที่นี่ ) - ซึ่งสามารถทดสอบเวลาในการเรนเดอร์ PHP ล้วนๆ, เวลาในการโหลดหน้าเว็บจริงและแม้กระทั่งการทดสอบพร้อมกัน

เพื่อทดสอบเวลาแสดงผลเว็บเซิร์ฟเวอร์ PHP คุณจะต้องใช้ (แทนที่ URL ตามนั้น)

./mage-perftest -u me-s1.sonassihosting.com -b

การทดสอบนี้จะให้รายละเอียดเวลาในการโหลดหน้าเว็บ (สำหรับองค์ประกอบ PHP ของหน้าเว็บเท่านั้นโดยไม่สนใจ JS / CSS / Images ใด ๆ ) ผลลัพธ์มีลักษณะดังนี้

Test Summary
============
Total files:              1
Total downloaded:         4K
Avg. page weight:         4.00K

Total time:               0.035s
Min response:             0.035s
Max response:             0.035s
Avg. page response:       0.03s

Concurrency/Repeats:      1
Transactions/s            28.57
Test URL:                 me-s1.sonassihosting.com
Success rate:             1/1 (100.00%)

เวลาแสดงผลเว็บเซิร์ฟเวอร์ของโลกแห่งความจริง

ประเภทสุดท้ายของการทดสอบคือเวลาที่ใช้ในการดาวน์โหลดทั้งหน้า (PHP + เนื้อหาคงที่) คุณสามารถใช้mage-perftestสิ่งนี้อีกครั้งเช่น

./mage-perftest -u me-s1.sonassihosting.com

หลีกเลี่ยงบริการทดสอบออนไลน์เช่นภัยพิบัติ

มีเครื่องมือทดสอบความเร็วออนไลน์เช่น GTMetrix, Pingdom และอื่น ๆ เครื่องมือเหล่านี้จะไม่ให้ผลลัพธ์ที่แม่นยำสำหรับการทำโปรไฟล์แบบละเอียด

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

บันทึกอื่น ๆ

เราเขียนบทความเกี่ยวกับการทดสอบระยะไกลและเหตุผลที่คุณควรหลีกเลี่ยงมัน http://www.sonassi.com/knowledge-base/magento-kb/why-siege-isnt-an-accurate-test-tool-for-magento- ประสิทธิภาพ/

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


Perftest นั้นยอดเยี่ยม - มันอยู่ที่ Github ดังนั้นฉันจะแยกมันได้หรือไม่?
philwinkle

ฉันมีปัญหาในการใช้งานที่ยุ่งเหยิงที่สุด แต่ผู้สร้างโปรไฟล์ให้ข้อมูลที่น่าสนใจ: mage::dispatch::routers_matchและmage::dispatch::controller::action::predispatchดูเหมือนจะเป็นปัญหาคอขวดถึงแม้ว่าฉันไม่แน่ใจว่าวิธีแก้ปัญหาที่นั่นคืออะไร ... การค้นหาไม่ได้เกิดขึ้นมากมาย
andyjv

ยิ่งฉันเปิดหน้าในครั้งเดียวมากเท่าไหร่วีโอไอพีก็ใช้เวลามากขึ้นmage::dispatch::routers_matchคิดเป็น 22s เมื่อโหลดหน้า 28 วินาที ในการโหลดเดียวกันนั้นยังมีmage::dispatch::controller::action::predispatchที่ 22s, CORE::create_object_of::Mage_Core_Model_Session21s และMage_Core_Model_Session_Abstract_Varien::start/start21s ฉันแน่ใจว่ามีสิ่งที่พ่อแม่ / ลูกเกิดขึ้น แต่ด้วยrouters_matchความที่ยาวนานที่สุดฉันสันนิษฐานว่าผู้ปกครองของอีก 20 วินาทีฟังก์ชั่น
andyjv

เอาท์พุท profiler รวมเป็นลำดับชั้น กล่าวคือ มันแสดงผลรวมรวมสำหรับทุกอย่างที่ทำงานภายในฟังก์ชันนั้น ดังนั้นMageจะใช้เวลานานที่สุดเนื่องจากมันรวมทุกอย่างไว้Routers_Matchเป็นฟังก์ชั่นถัดไปที่เรียกใช้ ไม่ใช่คอขวด แต่เป็นสิ่งที่เรียก (ดูเพิ่มเติมที่ตาราง) อย่าเปิดมากกว่า 1 หน้าต่างถ้าคุณทำโปรไฟล์ - นั่นจะไม่เกิดผลอะไร
Ben Lessani - Sonassi

ด้านล่างนี้Routers_Matchคือ: DISPATCH EVENT:controller_action_predispatchเวลา 21.0710 และOBSERVER: logวันที่ 21.0565
andyjv

3

นี่น่าจะเป็นปัญหาเซิร์ฟเวอร์ไม่ใช่ปัญหาวีโอไอพี ขึ้นอยู่กับชนิดของเซิร์ฟเวอร์ที่คุณใช้คุณสามารถรับโหลดได้ภายในไม่กี่วินาที คุณสามารถทำงานได้ทดสอบความซับซ้อนมากขึ้นที่นี่: http://www.magespeedtest.com/ คุณสามารถตรวจสอบความเร็วจากผู้ให้บริการเซิร์ฟเวอร์รายอื่นได้เช่นกัน

ฉันขอแนะนำให้ใช้รายงานน้ำตกจากhttp://www.webpagetest.org/และดูว่า "ความช้า" ของคุณมาจากไหน มันจะแบ่งออกเป็นส่วน ๆ (เช่นระยะเวลาในการดาวน์โหลดแต่ละไฟล์ css, js และไฟล์รูปภาพ) ซึ่งสามารถช่วยคุณในการปรับปรุงความเร็ว

แม้ว่าคุณจะปรับโค้ด Magento, css, js, รูปภาพและเนื้อหาให้เต็มประสิทธิภาพเซิร์ฟเวอร์จะเป็นปัญหาที่ใหญ่ที่สุดเสมอ ฉันอยากจะแนะนำให้ใช้ผู้ให้บริการโฮสต์วีโอไอพีเนื่องจากพวกเขามีการปรับเซิร์ฟเวอร์ให้ดีขึ้นเพื่อช่วยเหลือวีโอไอพี ส่วนตัวฉันใช้ Nexcess แต่คนอื่น ๆ ที่ฉันเคยได้ยินสิ่งที่ดีเกี่ยวกับ Sonassi Hosting และ Peer1

มีบทความไม่กี่ข้อเกี่ยวกับวิธีปรับปรุงความเร็วฉันขอแนะนำให้อ่านหน้าขาวบนเว็บไซต์ Magento

ในขณะที่มุ่งเน้นไปที่ Enterprise มากขึ้นคุณยังสามารถได้รับประโยชน์จากคำแนะนำมากมาย นอกจากนี้ต้องแน่ใจว่าคุณปรับปรุง Magento ให้ทันสมัยอยู่เสมอ! คุณไม่ควรตกรุ่นมากกว่าสองรุ่นจากรีลีสปัจจุบัน


1
ดีที่มีคุณที่นี่ kab8609! :-)
Fabian Blechschmidt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.