ทำไมวีโอไอพีถึงช้าจัง? [ปิด]


138

วีโอไอพีนั้นช้ามาก ๆ หรือ?

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

เซิร์ฟเวอร์ที่โฮสต์ให้บริการเว็บไซต์อื่น ๆ ที่ไม่ใช่ Magento เร็วสุด ๆ มันเกี่ยวกับโค้ด PHP ที่วีโอไอพีใช้นั้นทำให้ช้ามากและสิ่งใดที่สามารถแก้ไขได้?


12
คุณใช้ฮาร์ดแวร์อะไรอยู่ Magento ต้องการการสนับสนุนฮาร์ดแวร์ที่ร้ายแรงในประสบการณ์ของฉัน
กระวนกระวายใจ

3
ฉันไม่ได้ขอการสนับสนุน แต่เป็นรหัส ความหวังของฉันคือมีคนเคยประสบปัญหานี้ในอดีตและได้ปรับปรุงรหัสเพื่อหลีกเลี่ยงพฤติกรรมที่เฉื่อยชาเช่นนี้ ฉันไม่มีตัวอย่างรหัสเฉพาะที่จะชี้ให้เห็นเนื่องจากสามารถใช้งานได้ทั่วทั้งไซต์ ฉันจะต้องตรวจสอบเพิ่มเติมในเรื่องนี้
mr-euro

18
Magento มีไฟล์คลาสมากกว่า 6,000 ไฟล์และสร้างขึ้นเพื่อการใช้งานในองค์กรไม่ใช่สำหรับใช้ในบ้าน หากไม่มี APC ให้ลองนึกถึงการติดตั้ง ฉันไม่แนะนำสำหรับร้านค้าเล็ก ๆ
Elzo Valugi

1
เกี่ยวกับธงของคุณ @Jonesome: คำถามนี้กว้างมากและ ... อาจจะค่อนข้างเก่า ณ จุดนี้ ที่กล่าวว่าขณะนี้เรามีไซต์เฉพาะสำหรับปัญหาวีโอไอพี ( Magento ) ซึ่งน่าจะเป็นทรัพยากรที่ดีสำหรับทุกคนที่ทำงานเพื่อเพิ่มประสิทธิภาพการตั้งค่าของพวกเขา
Shog9

1
@ Shog9 ฉันจัดการทีมที่พัฒนาและสนับสนุนส่วนเสริมสำหรับวีโอไอพี ฉันสามารถบอกคุณได้ว่าปัญหาที่แน่นอนนี้เกิดขึ้นเกือบทุกวัน Magento ไม่ใช่แอปพลิเคชั่นหลอดไฟ "ปกติ" เนื่องจากเป็นทรัพยากรที่เข้มข้นมาก (มาก) หัวข้อนี้มีความสำคัญ การปิดมันบังคับให้บทสนทนาทั่วไปนี้หยุดทำงานดังนั้นซึ่งเป็นเรื่องที่น่าเสียดายสำหรับทุกคน
Jonesome Reinstate Monica

คำตอบ:


184

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

  1. บางส่วนของ Magento ใช้ระบบฐานข้อมูล EAV ที่ใช้งานบน MySQL ซึ่งหมายถึงการสอบถามสิ่ง "เดียว" มักจะหมายถึงการสอบถามหลายแถว

  2. มีหลายสิ่งหลายอย่างที่อยู่เบื้องหลัง (การกำหนดค่าแอปพลิเคชัน, การกำหนดค่าระบบ, การกำหนดค่าโครงร่าง ฯลฯ ) ที่เกี่ยวข้องกับการสร้างต้นไม้ XML ขนาดใหญ่ในหน่วยความจำแล้ว "สอบถาม" ต้นไม้เหล่านั้นเพื่อรับทราบข้อมูล สิ่งนี้จะใช้ทั้งหน่วยความจำ (จัดเก็บต้นไม้) และ CPU (แยกวิเคราะห์ต้นไม้) บางส่วนของเหล่านี้ (โดยเฉพาะแผนผังต้นไม้) มีขนาดใหญ่มาก นอกจากนี้เว้นแต่แคชที่อยู่บนต้นไม้เหล่านี้จะถูกสร้างขึ้นมาจากไฟล์บนดิสก์และในแต่ละคำขอ

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

  4. นอกเหนือจากระบบเลย์เอาต์แล้วระบบเทมเพลตของ Magento ยังมีการเรนเดอร์ซ้ำจำนวนมาก สิ่งนี้จะเพิ่มขึ้น

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

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

สิ่งที่สองที่คุณต้องทำคือให้แน่ใจว่าโฮสต์และทีมงานของคุณมีประสบการณ์ในการปรับแต่งวีโอไอพี หากคุณพึ่งพาแผน $ 7 / เดือนในการพบคุณก็ดีขอให้โชคดี


10
ขอบคุณสำหรับคำอธิบายมากมาย วีโอไอพีนั้นทรงพลังอย่างมากในขณะที่ให้ความยืดหยุ่น ตอนแรกฉันคิดว่ามันเป็นเพียงการเขียน DB ถ่วงเวลาเนื่องจาก SQL ที่เขียนไม่ดีบางอย่าง แต่ฉันรู้ตอนนี้ว่ามีมากขึ้นที่เกิดขึ้นอยู่เบื้องหลังฉากที่คาดหวังในตอนแรก หมายเหตุ: การแคชถูกปิดใช้งานเนื่องจากมีการเพิ่มผลิตภัณฑ์โดยเจ้าของร้าน เมื่อแคชเปิดอยู่เขาบ่นว่าผลิตภัณฑ์ไม่ปรากฏว่าบังคับให้ฉันปิดการใช้งานแคชขณะที่ร้านค้ากำลังตั้งค่า กำลังโฮสต์อยู่บนเซิร์ฟเวอร์เฉพาะ แต่ดูเหมือนว่าฉันจะต้องย้าย Magento ไปยังกล่องพิเศษของตัวเอง
mr-euro

4
ฉันประวัติเมื่อไม่นานมานี้กับ XHProf การแยกวิเคราะห์ XML ใช้เวลาเป็นจำนวนมาก - ฉันคิดว่าคุณเห็นด้วยกับรายการนี้
Morgan Tocker

1
ฉันสงสัยว่าการใช้ Magento บน HHVM จะทำให้ดีขึ้นหรือไม่ ครั้งล่าสุดที่ฉันตรวจสอบ HHVM ไม่รองรับ Magento แต่ถ้าทำเสร็จแล้วนั่นจะช่วยได้ไหม
Bharadwaj Srigiriraju

1
สิ่งนี้อธิบายได้มากมาย การรู้คือการต่อสู้ครึ่งหนึ่ง ฉันไม่เห็นว่าสิ่งนี้ไม่สามารถพิจารณาได้ว่าสร้างสรรค์
flcoder

อย่าลืมปรับแต่งไฟล์ออโต้โหลดเดอร์ของผู้แต่ง (ดูแนวทางการปฏิบัติงานคุณภาพเยี่ยม) หากคุณใช้ผู้แต่งและ - สำหรับโหมด Magento2 - เปิดโหมดการผลิต! วานิชยังเป็นความคิดที่ดีมากหากแอปพลิเคชันของคุณไม่มีปัญหากับแคชแบบเต็มหน้า
Dmitri Sologoubenko

54

นอกเหนือจากคำแนะนำของ Alan Storm เกี่ยวกับการแคชมีสองสิ่งที่ฉันขอแนะนำให้คุณดูโดยเฉพาะเกี่ยวกับการแคช:

- ตรวจสอบให้แน่ใจว่าแคชอยู่ใน memcached แทนที่จะเป็นดิสก์

ฉันดูแลการติดตั้งแบบวีโอไอพีสองสามครั้งและเมื่อคุณโหลดระบบประเภทใด ๆ memcached จะเริ่มทำงานได้เร็วขึ้นมาก และมันก็ตายง่ายที่จะเปลี่ยนมัน (เทียบกับการทำสิ่งอื่น ๆ วีโอไอพีอย่างน้อย!)

จุดเริ่มต้นที่ดีอยู่ที่นี่: http://www.magentocommerce.com/boards/viewthread/12998/P30/ - แต่ถ้าคุณไม่เคยใช้ memcached เลยมาก่อนมันก็คุ้มค่าที่จะดูข้อมูลทั่วไปเกี่ยวกับมันเช่นกัน

- เปิดใช้งานเทมเพลต / ดูการแคช

นี่เป็นบทความที่ดี: http://inchoo.net/ecommerce/magento/magento-block-caching/

มีคนดีในเว็บไซต์วีโอไอพีด้วย (แคชบล็อกของ Google magento) แต่มันลงในขณะนี้

ในการเพิ่มสองเซ็นต์ของฉันไปยังบล็อกแคชฉันขอแนะนำให้คุณสร้างบล็อกของคุณเองใน / app / code / local ขยายแกนหลักและกำหนดพารามิเตอร์แคชตั้งชื่อ xxx_Cache แล้วอัปเดตโครงร่างของคุณเพื่อใช้บล็อกเหล่านี้แทน ของแกนกลาง วิธีนี้คุณหลีกเลี่ยงการสูญเสียการเปลี่ยนแปลงหรือทำลายระบบเมื่อคุณอัพเกรดวีโอไอพี


3
ขอบคุณสำหรับคะแนน ฉันจะดู memcached ซึ่งฉันไม่ได้ใช้ในการผลิตมาก่อน ความคิดที่ดีเกี่ยวกับการโคลนบล็อกด้วย
mr-euro

3
ฉันสองสิ่งที่ benlumbey พูดว่าฉันไม่ได้ใช้ memcached ขณะที่ฉันเรียกใช้ windows server แต่ฉันเก็บไดเรกทอรี / var ในโซลิดสเตทไดรฟ์และนั่นทำให้ฉันแตกต่างอย่างมาก
46417 Rick J

@rickj - ใช่สิ่งที่จะทำให้. / var โฟลเดอร์เร็วขึ้นช่วยได้อย่างแน่นอนฉันได้ลองใช้ tmpfs ก่อน memcached เช่นกันและได้รับการสนับสนุนที่ดีเช่นกัน
benlumley

ฉันจะเพิ่มการใช้แคช apc เพียงโหนดเดียวเนื่องจากดูเหมือนว่ามีค่าใช้จ่ายน้อยลงแล้ว memcached สำหรับสภาพแวดล้อมหลายโหนด
sbditto85

2
ใช่ - จริง แต่มีข้อแม้บางประการขึ้นอยู่กับวิธีที่คุณใช้งาน PHP คุณสามารถจบลงด้วยการแยกแคช APC สำหรับทุกกระบวนการของ PHP - ซึ่งจะได้รับการลดลงอย่างเหมาะสมที่สุดหากคุณปั่นจักรยาน PHP ประมวลผลคำขอ X ทุกครั้ง
benlumley

23

หากคุณยังไม่ได้เห็น Magento และ Rackspace ร่วมมือกันเพื่อสร้างกระดาษสีขาวในการปรับแต่งประสิทธิภาพของวีโอไอพี มันยอดเยี่ยมมาก https://support.rackspace.com/whitepapers/building-secure-scalable-and-highly-available-magento-stores-powered-by-rackspace-solutions/

--- แก้ไข ---

แหล่งข้อมูลที่ยอดเยี่ยมอีกแห่งที่พร้อมให้บริการใหม่ (ต.ค. 2554) คือ: http://www.sessiondigital.com/assets/Uploads/Mag-Perf-WP-final.pdf

(ขอบคุณเนื่องจาก Alan Storm ในอันนี้)


ขอบคุณสำหรับการอัปเดตฉันจะอ่านในเชิงลึกในภายหลัง
mr-euro

2
ลิงค์ที่สองนั้นตายแล้ว
Laizer

1
ลิงค์แรกก็ตายเช่นกัน
Edward

ลิงก์เสีย Ner
Ner

1
ลิงค์โดยตรงสำหรับ Whitepaper ของ Rackspace (ลิงค์ # 1)
Levi Figueira

17

อาจเป็นสาเหตุที่ไม่ชัดเจนว่าทำไมส่วนติดต่อผู้ดูแลระบบของคุณช้ามาก Magento มีโมดูลชื่อ Mage_AdminNotification ลองปิดการใช้งาน ext เพราะมันคือการสืบค้น magentocommerce.com สำหรับข้อความอัพเดทใหม่ หากเซิร์ฟเวอร์ของพวกเขาช้าหน้าผู้ดูแลระบบของคุณจะรอและมีผลช้าเนื่องจากความล่าช้าของเครือข่ายและการโหลดข่าวภายนอก หากคุณรักษาความปลอดภัยการเชื่อมต่อเซิร์ฟเวอร์ขาออกของคุณผ่านไฟร์วอลล์สิ่งนี้อาจทำให้คุณหงุดหงิดมากยิ่งขึ้นเนื่องจากส่วนติดต่อผู้ดูแลระบบจะรอให้หมดเวลาเมื่อไม่สามารถเข้าถึง magentocommerce.com

หากต้องการปิดใช้งาน: ไปที่ระบบ -> การกำหนดค่าให้เลื่อนไปที่ด้านล่างแล้วกดขั้นสูง (ในส่วนขั้นสูง) ตอนนี้ปิดการใช้งานMage_AdminNotificationและบันทึก!


4
สิ่งนี้ทำให้ประสิทธิภาพการทำงานแตกต่างกันอย่างมากในสภาพแวดล้อมการพัฒนาท้องถิ่นของฉันซึ่งทำให้ฉันผิดหวังอยู่เสมอว่ามันวิ่งบนกล่องพัฒนาที่เร็วมากเพียงใด ขอบคุณ!
random_user_name

ใน Magento2: Stores-> Configuration-> Advanced-> ขั้นสูง, Mage_AdminNotificationปิดการใช้งานแล้ว
Scott C Wilson

6

ฉันมีเพียงผิวเผินกับ Magento ฉันติดตั้งไว้บน grid-server ที่ใช้ร่วมกันและการโหลดหน้าเว็บนั้นแย่มาก ~ 5 + วินาที ฉันได้ติดตั้งไว้ในเซิร์ฟเวอร์ CMS ที่ได้รับการปรับแต่งแล้วและมันให้ความรู้สึกที่รวดเร็วมาก ๆ

โฮสติ้ง Dedicated ของฉันมี ~ 10 Joomla! เว็บไซต์และเว็บไซต์ VBullitin ทำงานอยู่

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


6

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

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

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

อย่าลืมเขียนเซสชัน & Magento cache ไปยัง RAM disk สิ่งนี้จะนำคุณไปสู่อีกระดับของการแสดงอย่างแน่นอน

ยังมีอีกมากที่จะพูดที่นี่ แต่ฉันหมดเวลา คุณต้องรู้ว่าเว็บไซต์ที่ดีมีโค้ดดีในเวอร์ชั่น 1.4.1 CE ทำงานบนเซิร์ฟเวอร์ 2x5650 Xeon + 16 GB RAM และการมี Rproxy อยู่ด้านบนอาจทำให้ผู้เยี่ยมชมไม่ซ้ำกันมากถึง 50,000 คนต่อวันพร้อมหน้าเรียบสำหรับทุกคน .


5

การเปลี่ยนจาก Apache เป็น LiteSpeed ​​ช่วยเราได้มาก นอกจากนี้: การแก้ไขการตั้งค่าของ MySQL การติดตั้ง Fooman Speedster (โมดูลเพื่อบีบอัด / รวมไฟล์ js และ css) และการติดตั้ง APC Magento ได้โพสต์กระดาษสีขาวเกี่ยวกับวิธีการรับประสิทธิภาพที่ดีที่สุดจากรุ่นองค์กร แต่ก็สามารถใช้ได้กับรุ่นอื่น ๆ : http://www.magentocommerce.com/whitepaper/


4

มีสาเหตุหลายประการที่รถเข็นช็อปปิ้ง Magento ของคุณอาจทำงานช้า แต่ไม่มีข้อแก้ตัวเพราะมีหลายวิธีในการยกระดับปัญหาและทำให้รวดเร็วสวย การเปิดใช้งาน Gzip โดยการแก้ไขไฟล์ htaccess ของคุณเป็นการเริ่มต้น คุณยังสามารถติดตั้งส่วนขยาย fooman speedster ประเภทของเซิร์ฟเวอร์ที่ใช้จะเป็นตัวกำหนดความเร็วของร้านค้าของคุณ เคล็ดลับเพิ่มเติมและคำอธิบายที่ดีกว่าได้ที่นี่http://www.interactone.com/how-to-speed-up-magento/


4

เมื่อฉันติดตั้งครั้งแรกฉันมีเพจที่ใช้เวลาในการโหลด 30 วินาที เซิร์ฟเวอร์ของฉันไม่ได้ใช้งานสูงสุดในหน่วยความจำหรือโปรเซสเซอร์ดังนั้นฉันไม่รู้จะทำอย่างไร เมื่อดูที่แผงเน็ตของ firebug มันกำลังโหลดประมาณ 100 ไฟล์ต่อหน้าและแต่ละไฟล์ใช้เวลานานในการเชื่อมต่อ หลังจากติดตั้ง fooman speedster และ gzip ในเวลาโหลด htaccess ลดลงเหลือ 3 วินาทีเหมือนพวกเขาอยู่ในตะกร้าสินค้าอื่นบนเซิร์ฟเวอร์ของฉัน


3

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

ในทางกลับกัน. มันเป็นเว็บช็อปที่มีเครื่องมือมากมาย ดังนั้นหากคุณต้องการ webshop ที่ยืดหยุ่นเพียงแค่ซื้อเซิร์ฟเวอร์ที่มีประสิทธิภาพมากและคุณก็จะโอเค


1
การออกแบบฐานข้อมูลนั้นดีมากและมีความยืดหยุ่น
Black

3

มันจะลงมาเพื่อการทำงานกับประสิทธิภาพ

ประสิทธิภาพแบบดิบจะได้รับโดยใช้ nginx, php-fpm, memcached, apc และเซิร์ฟเวอร์ที่ออกแบบมาอย่างเหมาะสม

ฟังก์ชั่นเช่นประสิทธิภาพของ plesk และ magento สามารถจัดการได้โดยการใช้โครงสร้างพื้นฐานทั้งหมดในมุมมองเมื่อออกแบบคลาวด์สมรรถนะของวีโอไอพี

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