सामान्य अनुक्रमण समस्या के लिए स्थायी समाधान


23

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

हम इस समस्या के लिए स्थायी समाधान की तलाश कर रहे हैं जब हम परियोजनाओं पर काम करते हैं तो विभिन्न परिदृश्य होते हैं जैसे दैनिक आधार पर उत्पादों को अपडेट करना या किसी अन्य फ़ीड से उत्पादों को दैनिक आयात करना।

किसी को भी इस या कुछ समाधान के साथ कुछ सबसे अच्छा अभ्यास कर उन्हें साझा करें जो बहुत सराहना की जाएगी।


मैंने Magento और इसके एक्सटेंशन और इसके बेहद अकुशल और बेवकूफ डेटा आर्किटेक्चर में एक साल बर्बाद कर दिया है, जो केवल 10K प्लस उत्पादों के साथ एक ईकॉमर्स साइट बनाता है। इन सभी चेतावनियों को Magento CE को देखने के लिए किसी भी एक शुरुआत को दिया जाना चाहिए था। Magento onwers को हजारों आदमी घंटों बर्बाद करने के लिए अदालत में ले जाना चाहिए। बस एक डेटाबेस को इंडेक्सिंग करने दें, डेटाबेस का काम न करें। मैं सलाह देता हूं कि एक समर्पित सर्वर पर पैसा बर्बाद करने के बजाय और फिर रातोंरात बिना सोए काम के घंटे, एक होस्ट किए गए ईकॉमर्स प्लेटफॉर्म या एमएस एसक्यूएल सर्वर का उपयोग करने वाले एक खुले स्रोत पर जाने के लिए बेहतर है।
semiprecious.com

क्या आपने कभी सोचा कि शायद आपको सही एक्सटेंशन, या सही सर्वर कॉन्फ़िगरेशन नहीं मिला? यदि कुछ सॉफ़्टवेयर आपकी आवश्यकताओं के अनुरूप नहीं है, तो इसका मतलब यह नहीं है कि यह बेकार है। मैं पिछले 5+ सालों से मैगेंटो से अपनी रोटी (और बीयर) कमा रहा हूं और मेरे पास बहुत से संतुष्ट ग्राहक भी हैं। 10k से अधिक कैटलॉग के साथ कुछ।
मेरियस

वे सही हैं, जिस तरह से सीई काम करता है डेटा रखरखाव 10s से 100s हजारों स्कोस के साथ एक समस्या है। ईई उन अनुक्रमण अपडेट के कारण बेहतर है जो उन्होंने किए हैं, लेकिन यह $ मिलियन-मिलियन राजस्व कंपनियों के लिए है। आप इस पर होस्टिंग फेंक सकते हैं लेकिन आप अपने आरओआई को नकारात्मक कर देंगे। हमारे द्वारा उपयोग किया जाने वाला समाधान बहुत ही विशेषज्ञ और डेल्टा प्रक्रिया है, जो SAP और Walmart के उपयोग जैसे समाधानों के समान अपलोड करता है, एक विशेष मूल्य निर्धारण समाधान (ATG-esque) के साथ संयुक्त होता है, जो अनुक्रमणिका मुद्दे को दरकिनार करता है (fx और इनलाइन मार्जिन / विशेषता पुनरावर्ती), क्लस्टर के साथ संयुक्त। मेजबानी। सरल उत्तर नहीं, Magento को उत्कृष्ट रूप से डिज़ाइन नहीं किया गया था।

जवाबों:


31

यह समझने में महत्वपूर्ण है कि सूचकांक क्या धीमा है और क्यों

कैटलॉग जटिलता और अंततः स्टोर आर्किटेक्चर यह तय करेगा कि अंतर्निहित बुनियादी ढांचे के साथ एक पुन: सूचकांक को कितना समय लगेगा।

  • यदि आपको 50,000 उत्पाद और 10 स्टोर व्यू मिले हैं, तो आप catalog_url_rewriteप्रक्रिया में कुछ मिलियन पंक्तियों की गारंटी दे सकते हैं।

  • आप 100 उत्पादों, लेकिन 5000 गुण मिल गया है, तो आप गारंटी ले सकते हैं catalog_attributesया catalog_product_flatतालिका के पुनर्निर्माण के लिए एक उम्र ले, या जाएगा गिर फ्लैट अपने चेहरे पर

  • यदि आपके पास 1,000 उत्पाद हैं, लेकिन 500 खोजे जाने योग्य गुण हैं, तो catalog_fulltext_searchफिर से पूरा करने के लिए एक उम्र होगी

आपके द्वारा सामना की जाने वाली प्रत्येक समस्या का समाधान 1 आकार नहीं है, इसके बारे में आपके स्टोर को ठीक से तैयार करने के बारे में; इसका समर्थन करने और री-इंडेक्स फ़्रीक्वेंसी / रणनीति का उपयोग करने के लिए सही बुनियादी ढाँचा रखने की आवश्यकता है, जो सामग्री सामंजस्य और प्रदर्शन दोनों का समर्थन करता है।

  • फ्रंट-एंड कैशिंग जोड़ने से बिल्कुल भी मदद नहीं मिलेगी
  • स्थिति में अधिक हार्डवेयर फेंकना हो सकता है
  • कैटलॉग आकार / जटिलता को संबोधित करने से मदद मिलेगी
  • थर्ड पार्टी इंडेक्सिंग टूल्स का उपयोग करने से मदद मिलेगी
  • कुछ अनुक्रमित (जैसे। खोज> एसओएलआर) को बाहर करने से मदद मिलेगी

मूल्यांकन करने का भी मामला है कि क्या कुछ विशेष अनुक्रमित की भी आवश्यकता है। फ्लैट उत्पाद / श्रेणी का उपयोग करना हमेशा सभी दुकानों को तेज नहीं बनाता है; हमने देखा है कि यह दुकानों को बहुत धीमा बनाता है। तो आप पा सकते हैं कि पहले / बाद के प्रदर्शन का परीक्षण करने के बाद - वे एक विचार भी नहीं हैं।


8

tl; डॉ

चांदी की गोली का कोई हल नहीं है। कुछ वर्कअराउंड हैं, मैं सुझाव देता हूं Sonassi_Fastsearchindex- लेकिन यह विशेष रूप से कैटलॉग खोज के लिए है।

शायद बचाने के लिए सूचकांक अपडेट को अक्षम करना - रात भर चलने का शेड्यूल - कुछ राहत देगा? अधिक कैशिंग - मेम्केड, रेडिस, एपीसी - और वार्निश जैसे पूर्ण-पृष्ठ-कैश (यदि आप CE चला रहे हैं) के साथ संयुक्त आपको मिल सकता है। यदि आप वार्निश का उपयोग करने की योजना बना रहे हैं, तो Nexcess_Turpentineजल्दी शुरू होने के लिए गीथब को देखें।

अधिक जानकारी

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

हालाँकि, यदि आपके पास एक बड़ी कैटलॉग और बड़ी संख्या में विशेषताएँ हैं, तो आप खुद को इस स्थिति में पा सकते हैं कि अनुक्रमण में एक लंबा समय लगेगा - विशेष रूप से कैटलॉग_url_rewrite, product_flat - इस मामले में मेरा सुझाव इंडेक्स रन टाइम को ठीक करने के लिए नहीं है लंबाई, लेकिन बॉक्स को सीपीयू चक्रों को खर्च करने की अनुमति देने के लिए कुछ प्रसंस्करण बंद करने के बजाय सामग्री की सेवा के बजाय अनुक्रमण

अपने आप से पूछने के लिए प्रश्न:

  • क्या मैं अनुक्रमित मुद्दों के कारण व्यापार खो रहा हूं?
  • क्या मैं अनुक्रमण समस्याओं के कारण उत्पादकता खो रहा हूं ?
  • क्या मुझे रूपांतरण खोने का जोखिम है या मेरी रूपांतरण दर पीड़ित है?
  • क्या मेरे ग्राहक स्टॉक से बाहर की वस्तुओं को खरीदने के जोखिम में हैं, जो कि अनुक्रमित होने के प्रत्यक्ष परिणाम हैं, जो सिंक (इन्वेंट्री इत्यादि) से बाहर हैं।
  • क्या मेरे कैटलॉग मूल्य निर्धारण नियम मेरे मुख्य व्यवसाय का हिस्सा हैं और
  • क्या मेरी साइट पर खोज रूपांतरण दर आदर्श (8-10%) से अधिक है, इस प्रकार बेहतर अनुक्रमण से लाभ होता है?

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

वैकल्पिक

ऑफलोड कैटलॉग खोज और स्तरित नौसेना को सोलर।

स्केल क्षैतिज रूप से। अधिक Apache / nginx सर्वर जोड़ें। अधिक सर्वर = अधिक समवर्ती थ्रूपुट। यह 1: 1 नहीं है। नेक्सस के प्रदर्शन और अपाचे कॉन्फ़िगरेशन पर एक महान व्हाइटपेपर है: http://www.nexcess.net/magento-best-practices-whitepaper

और, अगर आप वार्निश के साथ जाने का विकल्प चुनते हैं - याद रखें:

यहाँ छवि विवरण दर्ज करें


हम सहारा की सराहना करते हैं, लेकिन री-इंडेक्सिंग का फ्रंट-एंड कैशिंग से कोई लेना-देना नहीं है; यह पूरी तरह से एक बैक-एंड ऑपरेशन है। फ्रंट-एंड लोड को कम करने से री-इंडेक्स को अधिक समय तक रोका जा सकेगा, लेकिन निश्चित रूप से यह तेज नहीं होगा।
बेन लेसानी - सोनासी

मुझे जो मिल रहा है वह बॉक्स में आने वाले ट्रैफ़िक को कम कर रहा है। यहां सबसे बड़ी चिंता की बात यह है कि साइट इंडेक्स के दौरान अनुपलब्ध हो रही है या नौकरी चलाते समय अज्ञात समय के लिए लॉक हो रही है। दिन के अंत में अगर इंडेक्सिंग के सामने वाले हिस्से पर कोई नकारात्मक प्रभाव नहीं पड़ा, तो इससे कोई फर्क नहीं पड़ेगा कि नौकरी कितनी देर चलती है। लोड समय को अनुक्रमण करने के लिए कोई सुधार या सुधार नहीं है। कोई भी "भुगतान किए गए संस्करण के लिए अपग्रेड" उत्तर नहीं चाहता है - इसलिए मेरा सुझाव आपकी अग्रिम उपलब्धता में सुधार कर रहा है और सूचकांक को ऑफ-पीक चलाने के लिए शेड्यूल करता है।

बिल्कुल, मैं समझ गया कि - लेकिन उपलब्धता एक वेबसाइट के लिए महत्वपूर्ण है; ई-कॉमर्स साइट के लिए यह पर्याप्त नहीं है। यदि आप वास्तव में इंडेक्स लॉक होने के कारण खरीदारी नहीं कर सकते हैं, तो साइट ऑफ-लाइन हो सकती है।
बेन लेसनी - सोनासी

हमारे पास केवल कुछ सौ उत्पाद हैं और अभी भी Magento 1.7 पर एक साधारण उत्पाद को सहेजने में कई मिनट लगते हैं, और मैं समर्पित Rackspace सर्वर के लिए प्रति माह $ 500 का भुगतान करता हूं। मुझे यकीन नहीं है कि कहां से शुरू करना है, लेकिन मुझे संदेह है कि कुछ सूचकांक शायद भ्रष्ट हैं। किसी को भी एक अच्छा Magento सलाहकार की सिफारिश कर सकते हैं?
मैक्स होजेस

5

मैगेंटो बैकएंड इंडेक्स मैनेजमेंट को काम करने के लिए ज्यादातर भारी मैगनेटो वेबस्पॉप्स में से ज्यादातर में यह मुश्किल है। मेरा यह मुद्दा अक्सर रहा है। डेवलपर द्वारा हर समय शेल स्क्रिप्ट चलाना अक्सर व्यस्त होता है। आमतौर पर मैं इस मुद्दे को इस तरह स्थायी रूप से ठीक करता हूं।

मैं शेल / indexer.php> शेल / myindexer.php की एक नई प्रतिलिपि बनाता हूं

154 के आसपास कुछ शेल / myindexer.php को अनुकूलित करें

} else if ($this->getArg('reindex') || $this->getArg('reindexall')) {

सेवा मेरे

} else if ($this->getArg('reindex') || $this->getArg('reindexall')  || $this->getArg('reindexallrequired') ) {

और, इस जांच को लाइन 166 के आसपास जोड़ें

//reindex only if required
if( $this->getArg('reindexallrequired') && $process->getStatus() == Mage_Index_Model_Process::STATUS_PENDING )
    continue;

से पहले

$startTime = microtime(true);
$process->reindexEverything();
$resultTime = microtime(true) - $startTime;
Mage::dispatchEvent($process->getIndexerCode() . '_shell_reindex_after');

और फिर मैं हर 5 मिनट में चलाने के लिए cpanel cron में नई शेल स्क्रिप्ट जोड़ता हूं

/home/public_html/shell/indexer.php --reindexallrequired >/dev/null

जैसा कि ऊपर की स्क्रिप्ट प्रत्येक 5 मिनट में चलती है और यह केवल उन प्रक्रियाओं को पुनर्व्यवस्थित करती है जिनमें रींडेक्सिंग की आवश्यकता होती है, यह सर्वर सीपीयू को भारी भार के जोखिम को कम करता है और साथ ही रींडेक्सिंग की पूरी प्रक्रिया बहुत तेज होती है। यदि किसी प्रक्रिया में रीइन्डेक्सिंग की आवश्यकता नहीं है, तो यह केवल रीइन्डेक्सिंग प्रक्रिया नहीं चलेगी। इंडेक्स मैनेजमेंट पेज में "अपडेट ऑन सेव" के लिए रीइन्डेक्सिंग मोड को रखना याद रखें। यदि आप नहीं जानते हैं, तो आप सबमिट बटन के बगल में क्रिया> परिवर्तन सूचकांक मोड में यह विकल्प प्राप्त कर सकते हैं।


@changeling, आपका स्वागत है। मुझे खुशी है कि यह आपके लायक है।
rbncha

मैंने इसे अपनी स्क्रिप्ट में शामिल कर लिया है, यदि कोई इसे उपयोगी पाता है: gist.github.com/steverobbins/…
स्टीव रॉबिन्स

4

यह कहना आसान होगा कि क्या आप कुछ और डेटा दे सकते हैं (इन्वेंट्री आकार, आगंतुक, मशीन), लेकिन यहां एक संभावना है:

  • हम Sonassi_Fastsearchindexकैटलॉग सर्च इंडेक्स के लिए एक्सटेंशन का उपयोग करते हैं । हालाँकि यह सिर्फ शीर्षक, विवरण और स्कु (मुझे लगता है कि मैंने देखा है) को अनुक्रमित करता है, यह बहुत अच्छा काम करता है और कैटलॉग खोज इंडेक्सर समय को कम करता है।
  • सबसे अधिक संभावना है कि कुछ इंडेक्सर्स आपको चलाने होंगे, यानी टैग के लिए या उत्पाद विशेषताओं के लिए नहीं। यह कभी-कभी पर्याप्त होता है यदि आप केवल मूल्य, उत्पाद फ्लैट, श्रेणी उत्पाद और कैटलॉग नियमित रूप से करते हैं, और अन्य शायद दैनिक।
  • हम हर दो घंटे में एक बाहरी प्रणाली के साथ उत्पादों को सिंक्रनाइज़ करते हैं, और इस बीच, हम php-script के साथ इंडेक्स करते हैं। इसलिए, हमारे पास एक क्रोनजॉब है जिसे हम प्रत्येक इंडेक्सर के पास एक निश्चित समय तक चलाना चाहते हैं, और इस क्रोन को स्क्रिप्ट को निष्पादित करने दें। ऐसा प्रतीत होता है कि सर्वर क्या कर सकता है और अप-टू-डेट उत्पाद डेटा के बीच सबसे अच्छा मध्य मार्ग है।

यह Magento CE 1.7.0.2 पर चल रहा है; अभी भी एक दर्द, हालांकि)


हम आम तौर पर उत्पाद फ्लैट के साथ समस्या का सामना कर रहे हैं अन्य सभी सूचकांक ठीक हैं।
रवीसन

3

Dnd_Patchindexurl का उपयोग करके मैं कैटलॉग_url_rewrite reindex समय को लगभग 70% तक काटने में सक्षम था

मुझे लगता है कि यह अक्षम उत्पादों को बाहर करने के लिए एक अच्छा समाधान है या दिखाई देने वाले उत्पादों को उनके URL को कुछ भी नहीं बनाने के लिए है!

$ php ./shell/indexer.php -reindexall
Product Attributes index was rebuilt successfully in 00:00:11
Product Prices index was rebuilt successfully in 00:00:22
Catalog URL Rewrites index was rebuilt successfully in 00:08:49
Product Flat Data index was rebuilt successfully in 00:00:51
Category Products index was rebuilt successfully in 00:00:19
Catalog Search Index index was rebuilt successfully in 00:00:12
Stock Status index was rebuilt successfully in 00:00:00
Tag Aggregation Data index was rebuilt successfully in 00:00:00

बाद:

$ php ./shell/indexer.php -reindexall
Product Attributes index was rebuilt successfully in 00:00:12
Product Prices index was rebuilt successfully in 00:00:24
Catalog URL Rewrites index was rebuilt successfully in 00:02:52
Product Flat Data index was rebuilt successfully in 00:00:57
Category Products index was rebuilt successfully in 00:00:25
Catalog Search Index index was rebuilt successfully in 00:00:13
Stock Status index was rebuilt successfully in 00:00:00
Tag Aggregation Data index was rebuilt successfully in 00:00:00

मैंने इसे 1.9.1.1 पर स्थापित किया और बहुत अच्छा काम किया!

कनेक्ट http://www.magentocommerce.com/magento-connect/catalog/product/view/id/15074/s/dn-d-patch-index-url-1364/category/12/123/ के माध्यम से स्थापित किया जा सकता है


1

EE 1.13 में अपग्रेड करें। इस संस्करण में इंडेक्स में भारी सुधार किया गया।


2
लेकिन अधिकांश ग्राहक सामुदायिक संस्करण को पसंद करते हैं।
रविवि

1
माना। 1.8 कुछ हफ़्ते में बाहर हो जाएगा, लेकिन यह सबसे अधिक संभावना इंडेक्स अनुकूलन शामिल नहीं होगा। मुझे यह पसंद नहीं है, लेकिन यह सबसे आसान, सबसे सुरक्षित और शायद सबसे सस्ता तरीका है ताकि आप अपने इंडेक्सर्स को प्रदर्शन कर सकें।
पॉल ग्रिगोरूटा

यह एक स्थायी समाधान खोजने के लिए असंभव है।
रावीसन

ज्यादातर मामलों में, जहां किसी के पास इतने एसकेयू हैं कि वे वास्तव में मौजूदा सीई 1.7 इंडेक्सर्स के साथ एक ईंट की दीवार में चल रहे हैं, तो उन्हें ईई 1.13 के साथ जाना चाहिए। इन सीई 1.7 और ईई 1.12 इंडेक्सर्स के साथ 10-25k एसकेयू वाले बहुत सारे सुचारू रूप से चलने वाले साइट हैं। कुंजी उन्हें वर्कफ़्लो स्तर पर अधिकांशतः सही तरीके से प्रबंधित कर रही है और सही बुनियादी ढाँचा दे रही है।
डेविडलगर

सीई पूरी तरह से पर्याप्त विकल्प है। सुविधाओं ईई 1.13 में हैं बग फिक्स - कि समुदाय सीई में वैसे भी प्रेरित किया। इसके बावजूद कि आप CE या EE का उपयोग करते हैं या नहीं - अनुक्रमण समय हमेशा पूरी तरह से कैटलॉग जटिलता, सर्वर कॉन्फ़िगरेशन, विज़िटर कॉन्सेप्ट और री-इंडेक्स फ़्रीक्वेंसी पर निर्भर करेगा। ईई कोई जादू की गोली नहीं है, और निश्चित रूप से किसी भी वास्तुकला से संबंधित मुद्दे के लिए एक उपयुक्त समाधान नहीं है।
बेन लेसानी - सोनासी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.