Magento इतना धीमा क्यों है? [बन्द है]


138

क्या Magento आमतौर पर बहुत धीमा है?

यह इसके साथ मेरा पहला अनुभव है और व्यवस्थापक पैनल केवल परिवर्तनों को लोड करने और सहेजने में उम्र लेता है। यह परीक्षण डेटा के साथ एक डिफ़ॉल्ट स्थापना है।

सर्वर जहां यह होस्ट किया गया है वह अन्य गैर-मैगनेटो साइटों को सुपर फास्ट परोसता है। यह PHP कोड के बारे में क्या है जो Magento का उपयोग करता है जो इसे इतना धीमा बनाता है, और इसे ठीक करने के लिए क्या किया जा सकता है?


12
आप इसे किस हार्डवेयर पर चला रहे हैं? Magento को मेरे अनुभव में कुछ गंभीर हार्डवेयर की आवश्यकता है।
घबराना

3
मैं समर्थन के लिए नहीं कह रहा हूं, लेकिन कोड। मेरी आशा थी कि किसी ने अतीत में इसका अनुभव किया था और इस तरह के सुस्त व्यवहार से बचने के लिए कोड को अनुकूलित किया था। मेरे पास कोड का एक विशिष्ट स्निपेट नहीं है क्योंकि यह पूरी साइट पर लागू है। मुझे मामले में आगे देखना होगा।
एमआर-यूरो

18
Magento के पास 6000+ क्लास फाइल्स हैं और यह कॉर्पोरेट उपयोग के लिए है न कि घरेलू उपयोग के लिए। एपीसी के बिना इसे स्थापित करने के बारे में मत सोचो। मैं छोटी दुकानों के लिए इसकी सिफारिश नहीं कर रहा हूं।
एल्जो वलूगी

1
आपके झंडे के बारे में, @Jonesome: यह प्रश्न बहुत व्यापक है और ... शायद इस बिंदु पर कुछ दिनांकित है। उस ने कहा, अब हमारे पास Magento के मुद्दों ( Magento ) के लिए एक समर्पित साइट है , जो संभवतः अपने सेटअप को अनुकूलित करने के लिए काम करने वाले किसी भी व्यक्ति के लिए एक अच्छा संसाधन होगा।
शोग

1
@ शोग 9 मैं एक टीम का प्रबंधन करता हूं जो मैगनेटो के लिए ऐड ऑन विकसित और सपोर्ट करता है। मैं आपको बता सकता हूं कि यह सटीक मुद्दा लगभग दैनिक आता है। Magento एक "सामान्य" दीपक ऐप नहीं है, इसमें यह बहुत (बहुत) संसाधन गहन है। यह धागा महत्वपूर्ण है। इसे बंद करना एसओ की इस आम बातचीत को बंद कर देता है, जो सभी के लिए दुर्भाग्यपूर्ण है।
जोन्सोम मोनिका

जवाबों:


184

मैं केवल प्रदर्शन के लिए मैगनेटो को अनुकूलित करने के लिए मूर्त रूप से शामिल हूं, लेकिन यहां कुछ कारण हैं कि सिस्टम इतना धीमा क्यों है

  1. Magento के भाग MySQL के शीर्ष पर कार्यान्वित EAV डेटाबेस प्रणाली का उपयोग करते हैं। इसका अर्थ है एक एकल "चीज़" के लिए क्वेरी करना अक्सर कई पंक्तियों को क्वेरी करना होता है

  2. दृश्यों के पीछे बहुत सारी चीजें हैं (एप्लिकेशन कॉन्फ़िगरेशन, सिस्टम कॉन्फ़िगरेशन, लेआउट कॉन्फ़िगरेशन, आदि) जिसमें स्मृति में विशाल एक्सएमएल पेड़ बनाना और फिर जानकारी के लिए उन्हीं पेड़ों को "क्वेरी करना" शामिल है। यह मेमोरी (पेड़ों को स्टोर करना) और सीपीयू (पेड़ों को पार्स करना) दोनों लेता है। इनमें से कुछ (विशेष रूप से लेआउट ट्री) विशाल हैं। इसके अलावा, जब तक कैशिंग चालू नहीं होता है, तब तक ये पेड़ डिस्क और प्रत्येक अनुरोध पर फाइलों से निर्मित होते हैं

  3. Magento अपनी कॉन्फ़िगरेशन प्रणाली का उपयोग करके आपको कक्षाओं को ओवरराइड करने की अनुमति देता है। यह एक शक्तिशाली विशेषता है, लेकिन इसका मतलब है कि कभी भी एक मॉडल, सहायक, या नियंत्रक को त्वरित किया जाता है, यह निर्धारित करने के लिए कि मूल कक्षा फ़ाइल या ओवरराइड क्लास फ़ाइलों की आवश्यकता है, अतिरिक्त PHP निर्देशों को चलाने की आवश्यकता है। यह कहते हैं।

  4. लेआउट सिस्टम के अलावा, Magento के टेम्पलेट सिस्टम में बहुत अधिक पुनरावर्ती प्रतिपादन शामिल है। यह कहते हैं।

सामान्य तौर पर, मैगेंटो इंजीनियर्स को सबसे लचीला, अनुकूलन योग्य सिस्टम बनाने और बाद में प्रदर्शन के बारे में चिंता करने के साथ, सबसे पहले और सबसे महत्वपूर्ण काम सौंपा गया था।

बेहतर प्रदर्शन सुनिश्चित करने के लिए पहली चीज जो आप कर सकते हैं वह है चालू कैशिंग (सिस्टम -> कैश प्रबंधन)। यह सीपीयू / डिस्क को अवरुद्ध करने से राहत देगा जो मैगेंटो अपने विभिन्न XML पेड़ों का निर्माण करते समय चलता है।

दूसरी बात जो आप करना चाहते हैं वह यह है कि आपके मेजबान और संचालन टीम को प्रदर्शन ट्यूनिंग मैगनेटो का अनुभव है। यदि आप $ 7 / महीने की योजना पर भरोसा कर रहे हैं, तो आप इसे अच्छी तरह से देख सकते हैं।


10
व्यापक स्पष्टीकरण के लिए धन्यवाद। लचीलेपन के लिए अनुमति देते समय मैजेंटो वास्तव में बहुत शक्तिशाली है। मैंने शुरू में सोचा था कि यह केवल डीबी कुछ बुरी तरह से लिखे गए एसक्यूएल के कारण ठप है, लेकिन मुझे अब एहसास होता है कि शुरू में अपेक्षित दृश्यों के पीछे बहुत कुछ है। एक नोट के रूप में: दुकान के मालिक द्वारा जोड़े जाने वाले उत्पादों के कारण कैशिंग अक्षम हो गया था। जब कैश था, तो उसने उत्पादों की शिकायत करते हुए मुझे कैशिंग को अक्षम करने के लिए मजबूर नहीं किया, जबकि दुकान की स्थापना की जा रही थी। यह एक समर्पित सर्वर पर होस्ट किया जा रहा है, लेकिन ऐसा लगता है कि मुझे Magento को अपने अनन्य बॉक्स में ले जाना होगा।
एमआर-यूरो

4
मैंने XHProf के साथ कुछ समय पहले इसे प्रोफाइल किया था। एक्सएमएल पार्सिंग ने बहुत बड़ी मात्रा में समय लिया - मुझे लगता है कि आप इस सूची के साथ हाजिर हैं।
मॉर्गन टोकर

1
मैं सोच रहा था कि HHVM पर Magento चलाने से यह बेहतर हो जाएगा। अंतिम बार मैंने जाँच की HHVM Magento का समर्थन नहीं करता है, लेकिन अगर यह किया गया, तो क्या इससे मदद मिलेगी?
भारद्वाज श्रीगिरिराजु २१'१५ को

1
यह बहुत कुछ समझाता है। जानना केवल आधी लड़ाई है। मैं यह नहीं देखता कि इसे रचनात्मक कैसे नहीं माना जा सकता।
flcoder

यदि आप संगीतकार का उपयोग करते हैं, और Magento2 के लिए - उत्पादन मोड पर स्विच करते हैं, तो संगीतकार की ऑटोलैडर फ़ाइलों का अनुकूलन करना न भूलें। वार्निश भी एक बहुत अच्छा विचार है, बशर्ते आपके आवेदन में पूर्ण-पृष्ठ कैश के साथ समस्या न हो।
दिमित्री कोलोगेन्को

54

कैशिंग पर एलन स्टॉर्म की सिफारिशों के अलावा, दो चीजें हैं जो मैं विशेष रूप से आपको कैशिंग से संबंधित देखने की सलाह दूंगा:

- सुनिश्चित करें कि डिस्क के बजाय कैशिंग मेमक्लेड में है।

मैं मैग्नेटो के एक जोड़े को स्थापित करने के बाद देखता हूं, और एक बार जब आप सिस्टम पर किसी भी प्रकार का लोड प्राप्त करते हैं, तो मेमकास्ट बहुत तेजी से प्रदर्शन करना शुरू कर देता है। और इसके मृत को इसे बदलने के लिए आसान है (कम से कम अन्य Magento सामान करने के सापेक्ष!)

अच्छा प्रारंभिक बिंदु यहां है: http://www.magentocommerce.com/boards/viewthread/12998/P30/ - लेकिन अगर आपने पहले कभी भी इसका उपयोग नहीं किया है, तो इसके बारे में कुछ सामान्य जानकारी देखने के लायक है।

- टेम्प्लेट / व्यू कैशिंग सक्षम करें।

यह एक अच्छा लेख है: http://inchoo.net/ecommerce/magento/magento-block-caching/

Magento साइट पर भी अच्छे हैं (google magento block caching), लेकिन फिलहाल यह नीचे है।

ब्लॉक कैशिंग में अपने दो सेंट जोड़ने के लिए, मैं आपको सलाह दूंगा कि आप अपने खुद के ब्लॉक / ऐप / कोड / लोकल बनाएं, कोर को बढ़ाएं और कैश मापदंडों को परिभाषित करें, उन्हें xxx_Cache नाम दें और फिर इन ब्लॉकों का उपयोग करने के लिए अपने लेआउट को अपडेट करें कोर वाले की। इस तरह, आप अपने परिवर्तनों को खोने से बचते हैं या जब आप Magento को अपग्रेड करते हैं तो सिस्टम को तोड़ते हैं।


3
अंक के लिए Thx। मेरे पास मेमेकैच्ड पर एक नज़र होगी जिसका मैंने पहले उत्पादन में उपयोग नहीं किया है। ब्लॉक क्लोनिंग के बारे में भी अच्छा विचार है।
श्री-यूरो

3
मैं दूसरा कहता हूं कि बेन्लुम्बे ने कहा, मैं विंडोज़ सर्वर चलाने के रूप में मेमकास्ट का उपयोग नहीं करता हूं, लेकिन मैं ठोस राज्य ड्राइव में / var निर्देशिका को संग्रहीत करता हूं और इससे मेरे लिए एक बड़ा बदलाव आया है।
रिक जे

@rickj - हाँ, बनाने के लिए कुछ भी ।/var फ़ोल्डर तेजी से निश्चित रूप से मदद करता है, मैंने टेंकफ्स का उपयोग करने से पहले भी याद किया है, और इससे भी एक अच्छा बढ़ावा मिला है।
बेन्मुले

मैं सिर्फ एक नोड के लिए एपेक कैश का उपयोग करना चाहूंगा क्योंकि ऐसा लगता है कि यह कम ओवरहेड है और फिर मल्टी नोड वातावरण के लिए यादगार है।
sbditto85

2
हाँ सच। लेकिन वहाँ कुछ कैविएट हैं, आप कैसे पीएचपी चलाते हैं इसके आधार पर, आप हर PHP प्रक्रिया के लिए एक अलग एपीसी कैश के साथ समाप्त हो सकते हैं - जो हर एक्स के अनुरोधों पर आपकी पीएचपी प्रक्रियाओं को सायकल करने पर भी कम इष्टतम हो जाता है।
बेंलुम्ली

23

यदि आपने इसे अभी तक नहीं देखा है, तो Magento और Rackspace ने मिलकर Magento के ट्यूनिंग में एक श्वेत पत्र बनाया। उत्कृष्ट है। https://support.rackspace.com/whitepapers/building-secure-scalable-and-highly-available-magento-stores-powered-by-rackspace-solutions/

--- संपादित करें ---

एक और महान संसाधन, नया उपलब्ध (अक्टूबर 2011) है: http://www.sessiondigital.com/assets/Uploads/Mag-Perf-WP-final.pdf

(इस पर एलन स्टॉर्म के कारण धन्यवाद।)


अपडेट के लिए धन्यवाद, मैं इसे बाद में गहराई से पढ़ूंगा।
श्री-यूरो

2
वह दूसरी कड़ी अब मर चुकी है।
लैसर

1
पहला लिंक भी मर चुका है।
एडवर्ड

लिंक टूट गए हैं। नेर
नेर

1
रैकस्पेस के व्हाइटपर के लिए सीधा लिंक (लिंक # 1)।
लेवी फिगुएरा

17

संभवतः एक बहुत ही गैर-स्पष्ट कारण भी है कि आपका व्यवस्थापक इंटरफ़ेस बहुत धीमा क्यों है। Magento में Mage_AdminNotification नाम का एक मॉड्यूल है। उस ext को अक्षम करने का प्रयास करें। क्योंकि यह जो करता है वह नए अपडेट संदेशों के लिए magentocommerce.com क्वेरी है। यदि उनका सर्वर धीमा है, तो आपका व्यवस्थापक पृष्ठ प्रतीक्षा कर रहा है और नेटवर्क लैग और बाहरी समाचार लोड होने के कारण प्रभाव में है। यदि आपने फ़ायरवॉल के माध्यम से अपने आउटगोइंग सर्वर कनेक्शन को सुरक्षित कर लिया है, तो यह और भी निराशाजनक हो सकता है, क्योंकि व्यवस्थापक इंटरफ़ेस टाइमआउट के लिए प्रतीक्षा करेगा जब वह magentocommerce.com तक नहीं पहुंच सकता है

इसे अक्षम करने के लिए: सिस्टम -> कॉन्फ़िगरेशन पर जाएं, नीचे स्क्रॉल करें और उन्नत (उन्नत अनुभाग में) हिट करें। अब अक्षम करें Mage_AdminNotificationऔर सहेजें!


4
इसने मेरे स्थानीय देव परिवेश पर प्रदर्शन में एक अलग बदलाव किया, जिसने मुझे हमेशा निराश किया कि यह बहुत तेजी से विकास के बक्से पर कितना धीमा चला। धन्यवाद!
random_user_name

Magento2 में: स्टोर-> कॉन्फ़िगरेशन-> उन्नत-> उन्नत, फिर अक्षम करें Mage_AdminNotification
स्कॉट सी विल्सन

6

मुझे केवल Magento के साथ एक सतही अनुभव है। मैंने इसे एक साझा ग्रिड-सर्वर पर स्थापित किया और पेज लोडिंग ~ 5 + सेकंड की गिरावट थी। एक लार्क पर, मैंने इसे सीएमएस साइटों को समर्पित सर्वर के लिए अपने अनुकूलित पर स्थापित किया, और यह बहुत, बहुत तेज़ लगा।

मेरी समर्पित होस्टिंग में ~ 10 जूमला था! साइटों और एक VBullitin साइट चल रही है।

मेरा अनुमान है कि यह केवल साझा होस्टिंग पर प्रदर्शन करने वाला नहीं है। ओवर-सब्सक्रिप्शन बस Magento के लिए पर्याप्त संसाधनों को चलाने की अनुमति नहीं देगा क्योंकि इसे चाहिए।


6

मैं अपनी कंपनी में प्रबंधित सर्वर अनुकूलन में अधिक शामिल हूं, लेकिन मेरे पास आपके लिए कुछ सुझाव हो सकते हैं। सबसे पहले, आप Zend सर्वर की कोड ट्रेसिंग सुविधा का उपयोग करके कोड को अधिक बारीकी से देख सकते हैं। यह आपको यह देखने की अनुमति देगा कि चीजें कब और कहां गंदी हो जाती हैं।

मैं कैश के बारे में पूरी तरह से बेमेलली के विचार साझा करता हूं। हमारे द्वारा होस्ट की जाने वाली अधिकांश साइट में ब्लॉक कैशिंग सक्षम भी नहीं है। इस कैश को स्पष्ट रूप से कहा जाना है और "ग्रहण नहीं" करना है। इसलिए यदि आपने अभी तक इस तंत्र का हिस्सा नहीं लिया है, तो यह कुछ ऐसा है जिसे आप निश्चित रूप से आज़माना चाहते हैं। यदि आपके पास एक ईई संस्करण है, तो आप पशु का सर्वश्रेष्ठ प्राप्त करने के लिए पूर्ण पृष्ठ प्राप्त कर सकते हैं।

एक रिवर्स प्रॉक्सी भी बहुत मदद करेगा। यह आपके सामने के सर्वर के php इंटरप्रिटेशन स्टैक पर दबाव को कम करते हुए, स्टैटिक रिसेसर्स को कैश कर देगा।

RAM डिस्क पर सत्र और Magento कैश लिखना न भूलें। यह निश्चित रूप से आपको दूसरे स्तर के प्रदर्शन के लिए भी मिलेगा।

यहां अभी भी बहुत कुछ कहा जा सकता है लेकिन मैं समय से बाहर चल रहा हूं। आपको यह जानना होगा कि एक अच्छी साइट, एक अच्छी तरह से 1.4.1 CE संस्करण में कोडित, एक 2x5650 Xeon + 16 GB RAM सर्वर पर चल रहा है और शीर्ष पर एक Rproxy होने से हर दिन सुचारू पृष्ठों के साथ 50 000 अद्वितीय आगंतुक ले सकते हैं। ।


5

अपाचे से लाइटस्पीड पर स्विच करने से हमें बहुत मदद मिली। इसके अलावा: MySQL की सेटिंग को एडिट करके, फोमन स्पीडस्टर (मॉड्यूल को जेएस और सीएसएस फ़ाइलों को संपीड़ित / संयोजित करने के लिए), और एपीसी स्थापित करना। Magento ने एंटरप्राइज़ संस्करण से सर्वश्रेष्ठ प्रदर्शन प्राप्त करने के तरीके पर एक श्वेत पत्र भी पोस्ट किया है, लेकिन यह अन्य संस्करणों के लिए समान रूप से लागू है: http://www.magentocommerce.com/whitepaper/


4

कई कारण हैं कि आपकी मैगनेटो शॉपिंग कार्ट धीमी गति से चल सकती है, लेकिन इसके लिए कोई बहाना नहीं है, समस्या को कम करने और इसे बहुत तेज़ बनाने के कई तरीके हैं। अपने htaccess फ़ाइल को संशोधित करके Gzip को सक्षम करना एक शुरुआत है। आप फ़ोमन स्पीडस्टर एक्सटेंशन भी स्थापित कर सकते हैं। सर्वर का प्रकार भी आपके स्टोर की गति निर्धारित करेगा। अधिक सुझाव और एक बेहतर स्पष्टीकरण यहाँ http://www.interactone.com/how-to-speed-up-magento/


4

जब मैंने पहली बार स्थापित किया था तो मेरे पास ऐसे पृष्ठ थे जो लोड होने में 30 सेकंड ले रहे थे। मेरा सर्वर राम या प्रोसेसर में अधिकतम नहीं था, इसलिए मुझे नहीं पता था कि क्या करना है। फायरबग के नेट पैनल को देखते हुए यह प्रति पृष्ठ लगभग 100 फाइलें लोड कर रहा था, और प्रत्येक को कनेक्ट होने में लंबा समय लगा। फ़ॉमान्ट स्पीडस्टर लगाने के बाद और htaccess लोड समय में gzip 3 सेकंड से नीचे था, जैसे वे मेरे सर्वर पर अन्य शॉपिंग कार्ट पर थे।


3

Magento बहुत धीमा है क्योंकि डेटाबेस डिज़ाइन बहुत अच्छा नहीं है। कोड एक गड़बड़ है और अद्यतन और अनुकूलन के लिए बहुत कठिन है। इसलिए सभी अनुकूलन कोड के बजाय कैश के माध्यम से किए जाते हैं।

दूसरी ओर। यह एक webshop है जिसमें बहुत सारे उपकरण हैं। इसलिए यदि आपको एक लचीले webshop की आवश्यकता है तो बस एक बहुत शक्तिशाली सर्वर खरीदें और आप ठीक हो जाएंगे।


1
डेटाबेस डिजाइन वास्तव में बहुत अच्छा और लचीला है।
ब्लैक

3

यह कार्यक्षमता बनाम प्रदर्शन के लिए भी नीचे आएगा।

कच्चे प्रदर्शन को नगीनेक्स, php-fpm, मेमकास्टेड, एपीसी और एक उचित डिज़ाइन किए गए सर्वर का उपयोग करके प्राप्त किया जाता है।

मैगेंटो परफॉर्मेंस क्लाउड को डिजाइन करते समय पूरे इन्फ्रास्ट्रक्चर को परिप्रेक्ष्य में रखकर प्लेस्क और मैग्नेटो परफॉर्मेंस जैसी कार्यक्षमता का प्रबंधन किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.