1k से 10k वेबसाइटों / दुकानों के साथ प्रदर्शन का मुद्दा


9

मैं Magento के प्रदर्शन को बेहतर बनाने का एक तरीका खोजने की कोशिश कर रहा हूं जब वेबसाइटों / दुकानों की मात्रा 1k से अधिक हो जाती है, और मेरा लक्ष्य 10k के आसपास है। यहाँ कुछ प्रश्न हैं; किसी भी सुझाव / मदद बहुत स्वागत है!

  1. नई वेबसाइट / स्टोर जोड़ना धीमा है;
    मैं Mage_Core_Model_Abstract में $ $ इस पर टिप्पणी करता हूं-> CleanModelCache () _afterSave () में, और स्थिति बेहतर लगती है, लेकिन वेबसाइटों / दुकानों की बढ़ती संख्या के साथ धीमी हो रही है। और मुझे नहीं पता कि इससे भविष्य में पूरे सिस्टम पर क्या असर पड़ेगा।

  2. आपी कॉल धीमा हो जाता है।
    मुख्य प्रक्रियाओं में से एक आदेश जगह है; मेरा अनुकूलित मॉडल कुछ डेटा को संसाधित करके, और अनिवार्य रूप से बिक्री / उद्धरण मॉडल और बिक्री / service_quote मॉडल का उपयोग करके इससे संबंधित है। प्रक्रिया Oauth से शुरू होती है। वेबसाइट और स्टोर की संख्या बढ़ने पर Oauth और ऑर्डर देने में अधिक समय लगता है, और मेमोरी की खपत बड़ी होती है। क्या इसके लिए Mage को config xml को लोड करने के साथ कुछ करना है, और यह तथ्य कि वेबसाइटों की बढ़ती संख्या के साथ config डेटा बड़ा हो जाता है?

  3. N98-magerun देव को खोलना: सांत्वना अधिक समय ले रही है; इसका कारण नहीं जानते।

  4. व्यवस्थापक पैनल से कॉन्फ़िगरेशन को सहेजने में अधिक समय लगता है; इसे सुधारना नहीं जानते।

क्या मैगेंटो उत्पन्न करने और इसकी मेमोरी खपत को कम करने के लिए कॉन्फ़िगर डेटा को लोड करने के तरीके को फिर से बनाना संभव है? क्या यह उन कारकों में से एक है जो मेरी स्थिति के लिए प्रदर्शन का कारण बनता है?

वर्तमान Magento उदाहरण: संस्करण = Magento EE 1.14.2.4;
कैश ऑन करें; अन्य कैश बंद;
मैसकल 5.6 और मोंगोबडी का उपयोग करना (कैटलॉग_संगोरी_टेंटी के लिए, कैटलॉग_प्रोडक्ट_एंटिटी, कोर_क्रेडिट);
वेबसाइटों की संख्या = दुकानों की संख्या = विचारों की संख्या = 1024;
उत्पाद की संख्या = 4501;

एडवांस में आप सभी को धन्यवाद!


2
क्यों Magento का समर्थन आपकी मदद नहीं कर सकता ???
मैगेंक्स

मुझे उनकी मदद कैसे लेनी चाहिए? मैं समुदाय के लिए नया हूँ .. धन्यवाद!
जैक।

1
आपके पास एंटरप्राइज़ संस्करण है, यह सुनिश्चित नहीं है कि आप इसे कहाँ प्राप्त करते हैं, लेकिन अगर इसके पीछे कोई मैगेंटो समर्थन नहीं है, तो बस पैसा और समय बर्बाद किया। तुम अच्छी तरह से उन्हें गेंदों में उन्हें हिट करने के लिए खरगोश की तरह चलाने के लिए आप मदद कर रहा है। एंटरप्राइज़ संस्करण होने का क्या मतलब है ???
मैगेंक्स

1
लेकिन आपकी क्वेरी का स्पष्ट उत्तर है - अलग-अलग डेटाबेस वाली अलग-अलग
मैग्नेटो की

आह ठीक है .. मैं अपने मालिक से हिसाब माँग रहा हूँ..हा।
जैक.जून

जवाबों:


3

यह धीमा होने के कारणों में से एक है क्योंकि प्रत्येक दुकान के लिए कॉन्फ़िगरेशन को / config / वेबसाइटों और / config / वैश्विक से डुप्लिकेट किया जाता है और ऐसा करने के लिए कोड कम से कम कुशल नहीं है। किसी भी सेटिंग में बदलाव 10 घंटे के मिनटों का हो सकता है, अगर घंटों का नहीं, कम प्रदर्शन और थ्रूपुट का। इसे और अधिक कुशल बनाने का मूल अर्थ यह होगा कि बेन मार्क्स आपके बाद आएंगे ... और अच्छे तरीके से नहीं।

यदि आप इस मार्ग से नीचे जाने वाले हैं तो सबसे आसान तरीका होगा 10k Magento के इंस्टॉलेशन और किसी प्रकार का ब्रोकर होना चाहिए जो उचित वेबसाइट के लिए अनुरोध प्रस्तुत करता है। हालांकि, यह निश्चित रूप से, आपके वास्तविक उपयोग के मामले पर निर्भर करेगा।

[जोड़ा]

उपयोग के मामले के आधार पर आप छद्म भंडार के रूप में श्रेणियों का उपयोग करने में सक्षम हो सकते हैं। आप तकनीकी रूप से प्रति स्टोरिंग थीम को बदलने के लिए लेआउट XML का उपयोग कर सकते हैं। लेकिन तब आप चेकआउट की सीमा में चले जाएंगे। सभी दुकानों को चेकआउट साझा करना होगा।

किसी भी तरह से, 10k Magento स्टोर सक्षम है, इस में यह असंभव नहीं है। लेकिन यह एक कठिन सड़क होगी जो भी आप चुनते हैं।


हाय केविन, आपके उत्तर के लिए धन्यवाद! हां, मैं उस कोड को देखता हूं जो कॉन्फिग ट्री को अपडेट करता है, जो लोडटॉक्सएक्सएलएम () है अगर मैं गलत नहीं हूं। मेरा विचार है; और आपने कहा कि इसे संशोधित करना अच्छा विचार नहीं है? मेरे बाद आने वाले बेन मार्क्स से आपका क्या मतलब है? इसके अलावा, ऐसा लगता है कि प्रत्येक http अनुरोध जो Magento के लिए आता है, अंततः विन्यास पेड़ को लोड करेगा, क्या यह सही है? किसी भी तरह से मैं इसका आकार छोटा कर सकता हूं? मैं शायद 10k Magento उदाहरण मिल के बारे में सोचना चाहिए ... कितना संसाधन की आवश्यकता होगी पर कोई विचार? बहुत बहुत धन्यवाद केविन!
जैक।

लेकिन 10k Magento के इंस्टॉलेशन होने का मतलब 10k mysql इंस्टेंस सही है? मुझे नहीं पता कि यह कैसे करना है, या यदि यह एक अच्छा विचार है ..
Jack.W

1
नहीं, इसका मतलब 10k mysql डेटाबेस होगा, लेकिन उनमें से सभी 10k एकल mysql उदाहरण में हो सकते हैं।
क्रिश्चियन

1
आपके बाद आने वाले "बेन मार्क्स" इस सांग
केविन श्रोएडर

1
10k Magento के इंस्टॉलेशन का मतलब 10k MySQL डेटाबेस है, हालाँकि इसे बाहर फैलाया जाएगा। स्क्रिप्ट को 10k स्टोर के साथ मौजूदा कोर कोड बनाने की तुलना में 10k अलग-अलग मैगेंटो इंस्टॉलेशन तैनात करना आसान होगा।
केविन श्रोएडर

1

आप कोर को हैक करने और वेबसाइट कैश विभाजन को सक्षम करने का प्रयास कर सकते हैं। आप डेटाबेस को हैक करने और स्मृति में कॉन्फ़िगरेशन जानकारी संग्रहीत करने का प्रयास कर सकते हैं। आप कॉन्फिगरेशन कैश को कुछ होशियार से बदलने की कोशिश कर सकते हैं - एक्सएमएल फ़ाइलों से जानकारी को कैशिंग [जो स्थैतिक हैं और सभी वेबसाइटों और दुकानों पर लागू होते हैं] ओवरराइड डेटा को गतिशील रूप से प्राप्त करते समय।

मैं एक सर्वर आदमी हूँ, इसलिए मैं डेटाबेस के साथ मिलिंग करूँगा। खासकर जब से यह करने के लिए तुच्छ है।

यदि आपके डेटाबेस सर्वर पर आपका नियंत्रण है: तो core_config_data तालिका को core_config_data_offline पर बदलें। MEMORY संग्रहण इंजन http://dev.mysqig.com/doc/refman/5.7/en/memory-storage-engine.html का उपयोग करके एक नया core_config_data तालिका बनाएं। Core_config_data_offline से core_config_data के सभी डेटा की प्रतिलिपि बनाएँ

यह देखने के लिए कि क्या core_config_data मौजूद है, यदि यह देखने के लिए कि c_config_data_offline से सभी डेटा की प्रतिलिपि बनाता है, तो यह देखने के लिए एक क्रॉन जॉब सेट करें। यदि यह नहीं है, तो इसे बनाएं और core_config_data_offline से core_config_data तक सब कुछ कॉपी करें

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

आप Mage / Core / Model / Config.php फ़ाइल को बदलने और अलग-अलग वेबसाइट कैश को सक्षम करने के साथ प्रयोग करना चाह सकते हैं। डिफ़ॉल्ट रूप से प्रत्येक स्टोर विशिष्ट कॉन्फ़िगरेशन डेटा व्यक्तिगत रूप से कैश किया जाता है। सभी वेबसाइट कॉन्फ़िगरेशन डेटा को एक ऑब्जेक्ट में कैश्ड किया जाता है।

ध्यान दें कि यह विन्यास के लिए है [व्यवस्थापक सेटिंग]। तो अगर आप अपने पहले से निर्धारित स्टोर स्तर पर अपने सभी कॉन्फ़िगरेशन परिवर्तन करते हैं। यदि आपका "वेबसाइट से वारिस" का उपयोग कर रहा है और साइट के स्तर पर आपके स्टोर के अधिकांश विशिष्ट कॉन्फ़िगरेशन परिवर्तन कर रहा है - तो कैश में हर वेबसाइट शामिल है। इसे विभाजित करके आप इसे बेहतर तरीके से तोड़ सकते हैं। संरक्षित $ _cacheSections = array ('admin' => 0, 'adminhtml' => 0, 'crontab' => 0, 'install' => 0, 'store' => 1, 'websites' => 0);

सेवा

protected $_cacheSections = array(
    'admin'     => 0,
    'adminhtml' => 0,
    'crontab'   => 0,
    'install'   => 0,
    'stores'    => 1,
    'websites'  => 1
); 

हाय गैरी, इस तरह के एक उपयोगी उत्तर के लिए धन्यवाद! मेरे पास कुछ प्रश्न हैं: 1) मेरे अवलोकन से, डेटाबेस क्वेरी एक मुद्दा नहीं है, यहां तक ​​कि 1k वेबसाइटों / दुकानों के साथ भी; यदि ऐसा है तो क्या मेमोरी स्टोरेज अभी भी मदद करेगा? 2) मुझे नहीं पता कि यह सही है, लेकिन कॉन्फ़िगर कैश केवल सिस्टम और मॉड्यूल की जानकारी संग्रहीत करता है; तो यह वेबसाइट / दुकान विन्यास के साथ कुछ करना है? 3) क्या http अनुरोध से किसी विशिष्ट स्टोर / वेबसाइट आईडी को पहचानने के लिए Magento का कोई तरीका है, और इस प्रकार केवल संबंधित कॉन्फ़िगर फ़ाइल लोड होती है? बहुत बहुत धन्यवाद गैरी!
जैक।

2
ये अनुशंसाएँ उस समस्या को संबोधित नहीं करती हैं जो ओपी नोट कर रहा था। कॉन्फ़िगरेशन कैश को बंद करने से अंततः सिस्टम को मारना होगा। यह Magento के सभी कॉन्फ़िगरेशन फ़ाइलों को लोड करने, उन्हें मर्ज करने, फिर सभी / वैश्विक मर्ज करने / सभी वेबसाइटों को मर्ज करने और फिर उन सभी को प्रत्येक / स्टोर नोड में मर्ज करने का कारण होगा। जो EACH के अनुरोध के लिए होगा। 10k साइटों के साथ आप प्रति अनुरोध दीवार घड़ी के समय को देख सकते हैं
केविन श्रोएडर

हे केविन, उत्तर के लिए धन्यवाद; वास्तव में मैं core_config_data टेबल को मेमोरी में स्थानांतरित करने, सिस्टम और मॉड्यूल कॉन्फिगरेशन के लिए कैशे को सक्षम करने, core_config_data को कॉन्फिगर ट्री में मर्ज करने से रोकने, और डेटा के इस हिस्से को डेटाबेस से सीधे क्वेरी के रूप में पढ़ने वाले फ़ंक्शंस बनाने की योजना बना रहा हूं। तुम क्या सोचते हो?
जैक.जून

1
समस्या core_config_data नहीं है। समस्या यह है कि स्टोर कॉन्फ़िगरेशन / वेबसाइटों से विलय कर दिए जाते हैं जो XML में / वैश्विक से विलय किए जाते हैं डेटाबेस पूरी तरह से ठीक हो जाएगा। यह PHP है जो कॉन्फ़िगरेशन मर्ज के कारण जीवन से नफरत करेगा। Mage_Core_Model_Resource_Config :: loadToXml के माध्यम से अपने डिबगर चरण में, लाइनों 110 और निम्नलिखित पर विशेष ध्यान दे रहे हैं
केविन श्रोएडर

1
अब अपनी स्मृति पटल पर वापस आने के लिए। कैशिंग डेटा का अर्थ है इसे कहीं स्टोर करना जो जल्दी से एक्सेस किया जा सकता है। Magento के कॉन्फ़िगरेशन डेटा को php क्रमांकित ऑब्जेक्ट में कैश करता है - यदि आपका कॉन्फ़िगरेशन डेटा बहुत बड़ा है, जिसका अर्थ है कि PHP को हर अनुरोध के लिए डेटा की एक बड़ी राशि का उपयोग करना है। यदि आप जानते हैं कि xdebug का उपयोग कैसे किया जाता है, तो अपने कुछ धीमा पृष्ठ लोड करने के लिए प्रोफ़ाइल देखें और देखें कि कितना समय बिना खर्च किए हुए चल रहा है: php.net/manual/en/function.unserialize.php - यदि बहुत बड़ा [ 100 से अधिक] तो कॉन्फ़िगरेशन "कैशिंग" आपके सिस्टम को तोड़ रहा है।
गैरी मोर्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.