SOAP कॉल पर प्रदर्शन में सुधार


13

मुझे Magento 2.1 के साथ एक प्रदर्शन समस्या है

मेरी दुकान में, मेरे पास 90.000 उत्पाद हैं। मैंने इन उत्पादों को साबुन में जोड़ा। जब मैंने ऐसा किया तो प्रत्येक लेख (उत्पाद?) (अनुरोध> प्रतिक्रिया) के लिए लगभग 7 सेकंड का समय लिया। संक्षेप में, सभी उत्पादों को इनिट करने में कुछ दिन लग गए।

अब सभी उत्पाद दुकान में हैं। सभी कुछ हफ्तों में मुझे लेखों (उत्पादों) पर कुछ चीजें अपडेट करनी होंगी। जब मैं साबुन के साथ ऐसा करता हूं, तो यह समान अवधि लेता है। जब मैं अपडेट करता हूं तो दुकान बेकार है। एक उदाहरण अनुरोध और प्रतिक्रिया यहाँ हैं: https://pastebin.com/aqnMJk98 https://pastebin.com/UAh0h8Zz

मेरे सर्वर में एक 12 कोर सीपीयू, 24 जीबी रैम और एसएसडी है। Apache2 PHP7-fpm और MYSQL के साथ इसका रनिंग उबंटू 16.04।

जब मैं अद्यतन प्रक्रिया को देखता हूं तो मैं देखता हूं कि MySQL के साथ 5 कोर 100% PHP में हैं और थोड़ा सा काम कर रहे हैं और बाकी बेकार है। राम केवल एक छोटी राशि का उपयोग करता iotopहै जो कहता है कि मेरा एसएसडी ऊब गया है।

मैंने डेटाबेस के प्रदर्शन को देखा और देखा कि Magento ने डेटाबेस में हजारों कमांड जोड़ने की प्रक्रिया में गोलीबारी की। यह ठीक है?

जब मैं इसे Magento CSV आयात के साथ अद्यतन करता हूं तो यह बहुत तेज होता है।

मैं इस Magento2 को गति देने के लिए क्या कर सकता हूं? इस स्थिति में इस दुकान के साथ अच्छी तरह से काम करना असंभव है।


आप कौन से एक्सटेंशन का उपयोग कर रहे हैं? समस्या आपके किसी एक्सटेंशन से संबंधित हो सकती है।
बनीम इयान

@tadeus क्या आपने पिछले 2 वर्षों में अपनी गति के मुद्दों को हल किया है? यदि नहीं, तो अस्वीकरण: मैं अपनी प्रोफ़ाइल, नेटवर्क प्रोफ़ाइल में बताई गई वेबसाइट की सामग्री लेखक हूं, जहां प्रदर्शन और अन्य विश्लेषण सेवाओं को बेहतर बनाने के लिए हमारे पास मुफ्त उपयोगिता लिपियाँ हैं।
विल्सन हक

जवाबों:


1

थोक आयात

कुंजी बैच आयात का उपयोग करने के लिए है, जैसा कि आपने खुद बताया है:

जब मैं इसे Magento CSV आयात के साथ अद्यतन करता हूं तो यह बहुत तेज होता है।

अपने SOAP एपीआई पर पुनर्विचार करने पर विचार करें और इसे एक थोक मोड में बदलें, जैसे कि आप कुछ मिडलवेयर बना सकते हैं जो आपके उत्पाद डेटा को स्वीकार करेंगे और एक सीएसवी फ़ाइल उत्पन्न करेंगे जो बाद में मैगनेटो में फीड हो सकती है।

3rd पार्टियों से कुछ एक्सटेंशन हैं जो इसके साथ मदद करते हैं।

सामान्य प्रदर्शन की सलाह

आप स्वयं Magento को गति देने का प्रयास कर सकते हैं, लेकिन आपको प्रत्येक सुधार से ~ 1-10% का लाभ मिलेगा, जब आप उनमें से कई करेंगे तो लाभ कई गुना हो जाएगा:

  1. सुनिश्चित करें कि आपके पास अक्षम कोड नहीं है
    1. जांचें कि आपका कोड नोटिस / त्रुटियों / चेतावनियों को स्पॉन नहीं करता है
    2. जांचें कि आपके पास इंस्टॉल किए गए एक्सटेंशन (तृतीय पक्ष या स्वयं से) में महंगी ईवेंट श्रोता नहीं हैं।
  2. एक बार नोटिस और चेतावनी को हटाने के बाद - लॉगिंग को अक्षम करने पर विचार करें।
  3. चेक करें कि आप कौन सा Magento और तृतीय पक्ष एक्सटेंशन का उपयोग नहीं कर रहे हैं और यह देख सकते हैं कि मैं Magento 2 में किस मॉड्यूल को अक्षम कर सकता हूं? सन्दर्भ के लिए।
  4. यदि आपका डेटाबेस सर्वर मैगेंटो एप्लिकेशन के समान मशीन पर है - तो सुनिश्चित करें कि आप टीसीपी / आईपी कनेक्शन के बजाय लिनक्स सॉकेट का उपयोग कर रहे हैं।
  5. यदि आपका डेटाबेस सर्वर मैगेंटो एप्लिकेशन के समान मशीन पर नहीं है - तो सुनिश्चित करें कि हर बार डेटाबेस पर सवाल उठाने के लिए PHP को DNS रिज़ॉल्यूशन करने की आवश्यकता नहीं होती है।
  6. डेटाबेस प्रदर्शन ट्यूनिंग सलाह की जांच करें, पहले से ही एक जवाब में पेरकोना लेख का उल्लेख किया गया था, यह भी जांच लें https://github.com/major/MySQLTuner-perl
  7. मैग्नेटो इंडेक्सिंग मोड्स की जाँच करें, शेड्यूल पर इंडेक्स पर जाएँ और हर रात एक रेनडेक्स करें या आयात पूरा होने के बाद, प्रोडक्ट सेव पर नहीं। https://devdocs.magento.com/guides/v2.2/extension-dev-guide/indexing.html#m2devgde-indexing-modes

यदि उपरोक्त सभी किया जाता है और आपको अधिक प्रदर्शन की आवश्यकता है:

  • अपने आवेदन को xDebug या ब्लैकफ़ायर के साथ प्रोफाइल करें, देखें कि बोतल गर्दन कहां हैं, उन्हें समाप्त करने का प्रयास करें।
  • आसपास पूछें, लेकिन अधिक विशिष्ट बनें, स्पष्ट करें कि आप इस समय क्या सुधारने की कोशिश कर रहे हैं।
  • कुछ मदद पाने के लिए एक Magento साथी या एक प्रमाणित Magento देव से पूछने पर विचार करें।

0

यहाँ समस्या यह है, कि SOAP कॉल बहुत महंगी हैं। यदि आप किसी उत्पाद को जोड़ने / संपादित करने / हटाने के लिए SOAP अनुरोध को फायर करते हैं, तो सभी आवश्यक जानकारी प्राप्त करने के लिए Magento को बहुत सारी तालिकाओं में शामिल होना पड़ता है। PHP के साथ संयोजन में यह व्यवहार स्वयं ही उन उत्पादों या डेटा की संख्या को धीमा कर देता है जिन्हें आप संसाधित करना चाहते हैं।

Magento स्वयं 5 नोड सर्वर क्लस्टर (1 x DB, 4 x Webserver) को ट्रैफ़िक को संभालने के लिए सुझाता है।

मैं क्षैतिज रूप से स्केलिंग की सलाह दूंगा, उदाहरण के लिए AWS के साथ। यह आपके व्यवसाय पर बड़ा प्रभाव डाल सकता है, लेकिन IMHO आप बेहतर प्रदर्शन करने के लिए Magento के लिए सक्षम नहीं होंगे।

AWS के भीतर, आपको एक ऑटोस्क्लिग समूह की सुविधा का उपयोग करना चाहिए जो आपके द्वारा लॉन्च किए जाने वाले सर्वरों की संख्या के लिए जिम्मेदार है। हर बार जब आप डेटा जोड़ते हैं, तो दबाव को संभालने के लिए नए सर्वर लॉन्च होते हैं। समान AWS RDS (DB सेवा) के साथ बहुत आसान और तेज किया जा सकता है।

मामले में, कि AWS बिल्कुल भी विकल्प नहीं है, आप Magento और PHP को ट्विक करने का प्रयास कर सकते हैं। मैं इसके लिए सेटिंग्स की जाँच करने की सलाह दूंगा:


0

यह लिंक बताता है कि MySQL मेमोरी का उपयोग कैसे किया जाता है। चूंकि आपके पास इतनी रैम है कि आप MySQL को अधिक आवंटित करने से लाभान्वित हो सकते हैं। यह एक आसान और कम खर्चीला ($) समाधान हो सकता है जो एक समर्पित डेटाबेस सर्वर का निर्माण कर रहा है।

https://www.percona.com/blog/2016/05/03/best-practices-for-configuring-optimal-mysql-memory-usage/

इसके अलावा, आप MySQL कार्यक्षेत्र उपयोगिता को इस ट्वीकिंग के साथ मदद करने के लिए उपयोगी पा सकते हैं और यह भी निगरानी कर सकते हैं कि MySQL सामान्य रूप से क्या कर रहा है। उपयोगिता Oracle / MySQL द्वारा बनाई गई है; यह कुछ यादृच्छिक शेयर ऐप नहीं है।

https://dev.mysql.com/downloads/workbench/

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