Magento Enterprise पूर्ण पृष्ठ कैश को प्री-वार्मिंग


19

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

Magento में साइट को क्रॉल करने और सुबह जल्दी FPC को गर्म करने के लिए एक अंतर्निहित cronjob शामिल है।

मैंने सुबह की नौकरियों को चलाने में बहुत अधिक समय लगने, अन्य नौकरियों को चलने से रोकने के कारण, मुद्दों को देखा और सुना है, और यह जानना चाहूंगा कि दूसरे क्या उपयोग करते हैं या ऐसा करने के लिए सुझाव दिया जाएगा। मेरे पास दो विचार हैं:

  • जनरेट किए गए साइटमैप फ़ाइल के प्रत्येक पृष्ठ को क्रॉल करने के लिए शेल स्क्रिप्ट को एक साथ रखें।
  • Magento को बूटस्ट्रैप करने के लिए एक अलग crontab प्रविष्टि और एक छोटी PHP स्क्रिप्ट का उपयोग करें और क्रॉलर प्रक्रिया को सीधे निष्पादित करें।

इस पर किसी भी विचार और / या अनुभव का स्वागत है!


1
वास्तव में आप एंटरप्राइज क्रॉलर को एक अलग फाइल से कॉल कर सकते हैं और इसे ट्रिगर करने के लिए अपने सर्वरों का उपयोग कर सकते हैं ताकि यह रास्ते में न हो।
तून वान डोरेन

जवाबों:


16

आप फ़ाइल के साथ संयोजन में घेराबंदी का उपयोग कर सकते हैं sitemap.xml, जैसे MageSpeedTest करता है।

#categories
curl http://yourmagentostore.com/sitemap.xml | sed 's/\<url\>/\<url\>\n/g' | grep 0.5 | sed 's/.*loc>\(.*\)<\/loc.*/\1/g' > urls.txt
#products
curl http://yourmagentostore.com/sitemap.xml | sed 's/\<url\>/\<url\>\n/g' | grep 1.0 | sed 's/.*loc>\(.*\)<\/loc.*/\1/g' >> urls.txt

फिर भागो

siege -i -c 1 -t 7200s -f urls.txt

सामग्री यहाँ से खट्टी है


आप अनुरोधों के बीच विलंब का उपयोग भी कर सकते हैं–delay
बेन लेसानी - सोनासी

नोट: ये sed कमांड डार्विन पर काम नहीं करते हैं, लेकिन CentOS पर करते हैं।
davidalger

1
यह गारंटी नहीं देता कि हर यूआरएल "गर्म" होगा। siege बेतरतीब ढंग से फ़ाइल से हिट करने के लिए URL का चयन करेगा, लेकिन जरूरी नहीं कि वह हर URL पर जाए।
जो कॉन्सटेंट

22

हम बस - बिल्कुल नहीं। कभी। हम इसे बार-बार कहेंगे लेकिन

कैशिंग! = प्रदर्शन

आपकी साइट की जरूरत है (कि इस तथ्य के लिए या वार्निश) पांचवें वेतन आयोग के अलावा बिना तेजी से किया जाना है। हमेशा एक ऐसा समय आने वाला है जब सामग्री प्राइमेड नहीं है (ऊपर का परिदृश्य)।

एक अनलोड किए गए स्टोर पर, FPC के साथ पृष्ठ लोड बार गैर-FPC की तुलना में बहुत अधिक प्रभावशाली नहीं होना चाहिए; Magento < 400msमानक कैश पर (श्रेणी / उत्पाद / खोज पृष्ठों पर) पृष्ठ लोड समय में काफी खुशी से सक्षम है । FPC इसे नीचे लाएगी < 80ms- लेकिन केवेट के साथ आता है।

  1. स्टॉक / मूल्य की जानकारी अमान्य या TTL समाप्ति तक पुरानी है
  2. अमान्य या TTL समाप्ति तक नई आइटम / अधिक प्रासंगिक खोज पुराना है

    आदि।

एफपीसी (या वार्निश) पर निर्भरता एक बुरा विचार क्यों है

यदि आप लगातार यह सुनिश्चित करना चाहते हैं कि कैश मैन्युअल रूप से बनाए गए हैं, तो कुछ कारण हैं

  1. आपके पास कैश को रखने के लिए पर्याप्त प्राकृतिक फुटफॉल नहीं है (देखें 'जहां एफपीसी उपयोगी है')
  2. आपकी साइट उनके बिना बहुत धीमी है

आप सब कुछ कैश नहीं कर सकते

यदि आप सिर्फ 5 श्रेणियों के साथ एक स्टोर लेते हैं, तो 2 स्तर गहरे, 5 फ़िल्टर करने योग्य गुण, 5 विशेषता विकल्प प्रत्येक और 1000 उत्पाद; यह संभव संयोजन का एक बहुत कुछ है।

25 विकल्पों में से चुनने के लिए, एक पंक्ति में 5 बार तक उठाते हैं - मैं कोई सांख्यिकीविद् नहीं हूं , लेकिन मुझे पता है कि ... (विशेषता विकल्पों की संख्या पूरी तरह से कम नहीं होती है)

25 possible URLs on the first selection
20 possible URLs on the second selection
15 possible URLs on the third selection
10 possible URLs on the fourth selection
5  possible URLs on the fifth selection

5^5 = 3,125 possible combinations (for top level categories)
5^4 = 625 possible combinations (for 2nd level categories)

ठीक है, ऊपर एक संभावित परिदृश्य नहीं है, जैसा कि मैं कल्पना करता हूं, 3 क्लिक के भीतर - उपलब्ध उत्पादों की संख्या ग्राहक को उनके उत्पाद को खोजने के लिए पर्याप्त रूप से कम हो जाती। यहां तक ​​कि अगर यह थे ...

25 possible URLs on the first selection
10 possible URLs on the second selection
3 possible URLs on the third selection

5^3 = 125 possible URL combinations 

तब के समय के अनुसार 5 श्रेणियां, यानी 625 यूआरएल। इस स्तर पर, हम एक छोटे कैटलॉग के बारे में बात कर रहे हैं, और सभी उत्पाद URL को पूरी तरह से अनदेखा कर रहे हैं।

हम इस तथ्य में भी शामिल नहीं हैं कि यदि आपने श्रेणियों को नेस्टेड कर दिया है is_anchor, तो इसकी तेजी से वृद्धि हो सकती है।

इसलिए पृष्ठों की उस मात्रा को क्रॉल करने के लिए - आपको या तो यह उम्मीद है कि आपके पेज का लोड समय अच्छा है और इसके साथ शुरू करने के लिए कम है, ताकि यह एक त्वरित हल्की प्रक्रिया हो (इस प्रकार क्रॉल के उद्देश्य को हराना) - या आपके पास TTL समाप्त होने से पहले इसे पूरा करने के लिए पर्याप्त समय।

यदि आपके पृष्ठ में 0.4s का पृष्ठ लोड समय था और आपके पास 8 कोर CPU था - तब ...

625 * 0.4 = 250 / 8 = 31 seconds

0.5 मिनट, बुरा नहीं है - लेकिन आपको लगता है कि आपके पास 2s पृष्ठ लोड समय था

625 * 2 = 1250 / 8 = 156 seconds

लेकिन अगर आपने अधिकतम संभव परिदृश्य लिया

3,750 * 2 = 7,500 / 8 = 937 seconds ~ 15 minutes

तो यह आपका उत्पादन सर्वर है, 15 मिनट के लिए 100% सीपीयू लोड के तहत। आप क्रॉल गति को उस टीटीएल के अनुपात में कम कर देंगे जो आप चाहते हैं।

इसलिए यदि आप चाहते हैं कि सामग्री में 3600 टीटीएल हो, तो क्रॉल 4 गुना धीमा हो सकता है - यानी। केवल 25% CPU क्रॉल को समर्पित है। इस श्रेणी की सामग्री को रखने के लिए बहुत सारे संसाधन हैं - हमने इस स्तर पर उत्पादों, खोज शब्दों या अतिरिक्त स्टोर विचारों में भी तथ्य नहीं किया है

वास्तव में, catalog_url_rewritesतालिका में संयोजनों के सरासर आकार (जो कि स्तरित नेविगेशन से मापदंडों में फैक्टरिंग भी नहीं है) को देखते हुए, यह अनुमान लगाएगा कि आप कितने URL को क्रॉल करने की आवश्यकता को समाप्त कर सकते हैं।

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

जहां एफपीसी उपयोगी है

जहां एफपीसी का लाभ खेलने में आता है, वह एक भारी भरकम दुकान पर है - जहां आपके पास यातायात का उच्च स्तर है और कैश स्वाभाविक रूप से और लगातार सरासर फुट-फॉल द्वारा प्राइम किए जाते हैं।

एफपीसी तब आमतौर पर अनुरोधित सामग्री पर बुनियादी ढांचे के ओवरहेड्स को कम करके खेल में आता है - मैगेंटो बैकएंड पर उन दोहराया कॉलों में कटौती।

इसलिए हमने पाया है कि जब आप बहुत अधिक ट्रैफ़िक स्तर प्राप्त करते हैं तो एफपीसी को तैनात करना बहुत अच्छा होता है - पृष्ठ लोड समय को कम करने के लिए नहीं - बल्कि संसाधन उपयोग को कम करने के लिए।

कौन परवाह करता है, मैं अभी भी क्रॉल करना चाहता हूं

ठीक है, तो आपको दो विकल्प मिले हैं

  1. एक टेम्पलेट से क्रॉल (उदाहरण। साइटमैप)
  2. पृष्ठ द्वारा लिंक पृष्ठ निकालें और प्रत्येक को क्रॉल करें

और इन दोनों को करने के लिए कई उपयोगिताओं हैं, ये कुछ हैं जिनके बारे में मुझे पता है

  1. दाना-perftest
  2. HTTrack
  3. Nutch
  4. Sphider
  5. Crawler4j

मैज-पेरफ़ेस्ट का उपयोग करना

आप अपने स्टोर को Mage-Perftest के साथ बहुत आसानी से क्रॉल कर सकते हैं, पहले इसे डाउनलोड करें

wget http://sys.sonassi.com/mage-perftest          (64bit) OR
wget http://sys.sonassi.com/mage-perftest-i386     (32bit)
chmod +x http://sys.sonassi.com/mage-perftest*

फिर Magento के साइटमैप का उपयोग करके क्रॉल प्रक्रिया को परिभाषित करें (आप किसी भी URL का साइटमैप बनाकर इसे अनुकूलित कर सकते हैं, बशर्ते कि यूआरएल <loc></loc>टैग में लिपटे हों )। निम्न आदेश साइटमैप फ़ाइल से सभी URL को पढ़ेगा, फिर 1440 मिनट (1 दिन) के दौरान URL को केवल क्रॉल (PHP) करेगा। यदि सर्वर 20% CPU या 2 के लोड औसत से अधिक है - तो क्रॉल अस्थायी रूप से विराम देगा।

./mage-perftest -u www.example.com -s www.example.com/sitemap.xml -r auto -b -d 1440 -z -a 20 -l 2  

यदि आपके पास 1000 URL हैं, तो 1 दिन में क्रॉल किया जाता है, जो लगभग अनुमानित होगा। 1 अनुरोध हर 86 सेकंड (ओं) ~ 0.011 आरपीएस का लक्ष्य


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

1
मैं नेक्सस का सम्मान करता हूं - लेकिन उनका श्वेत पत्र प्रदर्शन को प्राप्त करने के लिए कैशिंग पर बहुत अधिक ध्यान केंद्रित करता है - बजाय यह सुनिश्चित करने के कि पर्यावरण पहले से ही प्रदर्शन योग्य है और कोड साफ, तेज और कुशल है। हम अपने ग्राहकों के लिए वार्निश प्रदान करते हैं - लेकिन आवश्यकता होने तक इसके उपयोग की वकालत नहीं करते हैं। तभी बुनियादी सुविधाओं की लागत को कम करने के साधन के रूप में - यानी। जब ~ 94% गैर-परिवर्तित / चेकआउट ट्रैफ़िक CPU चक्रों का उपभोग कर रहा है। कैचिंग अच्छे कृत्रिम बेंचमार्क आंकड़ों के लिए बनाता है - लेकिन वास्तव में इसका मतलब यह नहीं है कि अगर टीटीएल बहुत लंबा है (बासी सामग्री) - या इसे रखने के लिए पर्याप्त ट्रैफ़िक नहीं है।
बेन लेसानी - सोनासी

1
अत्यधिक उच्च ट्रैफ़िक साइटों के लिए - हमें कुछ मिल गया है, और कृत्रिम रेंगने के माध्यम से कैश को गर्म रखने की कोशिश करना व्यर्थ है - प्राकृतिक ट्रैफ़िक बस ठीक करता है। यदि कुछ भी, क्रॉलिंग केवल उन संसाधनों को हटा देता है जो अन्यथा ग्राहकों द्वारा उपयोग किए जाते हैं।
बेन लेसानी - सोनासी

मैं प्रदर्शन के लिए कैशिंग का उपयोग करने पर ध्यान केंद्रित करते हुए उनके श्वेत पत्र पर अलग होने का अनुरोध करता हूं। वे दिखा रहे थे कि एक 2 + 1 क्लस्टर कितना थ्रूपुट हासिल कर सकता है। वे पृष्ठ लोड समय में भी नहीं छूते थे, केवल लेन-देन थ्रूपुट। हार्डवेयर उनके पास बस के रूप में अनुकूलित के रूप में आप प्राप्त कर सकते हैं ... और हाँ, मुझे कैश्ड सामग्री पर TTL के प्रभावों का एहसास है। बस फिर से पुनरावृत्त करने के लिए, मैं यहां प्रदर्शन प्राप्त करने के लिए नहीं देख रहा हूं, हमारे पास पहले से ही है। सुबह की कैश फ्लशिंग यानी सामान्य ट्रैफिक में गड़बड़ी आने से पहले यह पता लगाया जाएगा कि थ्रूपुट में लैग / ड्रॉप को बायपास करने के तरीके क्या हैं।
davidalger

1
मैं तब उलझन में हूँ। यदि आपका स्टोर पहले से तेज़ है - लेकिन कैश साफ़ करते समय आप गिर जाते हैं। या तो ए) सुबह में कैश को साफ न करें, इसे रात से पहले करें और खोज क्रॉल बॉट्स (Google / bing आदि) को आपके या बी के लिए प्राइमिंग करें । सही इंफ्रास्ट्रक्चर प्राप्त करें । यदि आपका स्टोर लैग / मंदी को रोकने के लिए एफपीसी / वार्निश पर टिका है - तो ऐसा लगता है कि आप चाकू-धार पर चल रहे हैं ...
बेन लेसानी - सोनासी

0

मैं इन दिनों एक ब्लॉग पोस्ट के लिए अपना पूरा शेख़ी बचाऊंगा, लेकिन इस बीच मेरे छोटे कैश वार्मर में एक चोटी है wfpc

परीक्षण प्रदर्शन

आप अपने Magento साइट के प्रदर्शन का परीक्षण कर सकते हैं

./wfpc -t http://mymagentosite.com/sitemap.xml

Finished testing your Magento site performance
Total download time (in seconds)   : 5.0269110202789
Total download time (formatted)    : 0:0:5.026
Average page time (in milliseconds): 502.69110202789

एफपीसी वार्मिंग

और आप FPC को गर्म कर सकते हैं, जो साइटमैप में हर URL को हिट करेगा। xml

./wfpc -w http://mymagentosite.com/sitemap.xml

यदि आप चाहें तो अनुरोधों के बीच देरी भी कर सकते हैं, यहाँ अनुरोधों के बीच 1 सेकंड की देरी है।

./wfpc -w -d=1 http://mymagentosite.com/sitemap.xml

परीक्षण मोड केवल 10 URL को बेतरतीब ढंग से हिट करता है, इसलिए एक बार जब आप अपना FPC गर्म कर लेते हैं, तो आप यह पता लगाने के लिए परीक्षण मोड चला सकते हैं कि FPC कितना अंतर रखती है!

विचार

व्यक्तिगत रूप से, मुझे लगता है कि एक गर्म अर्थ है ... लगभग 40 पृष्ठों के साथ एक छोटी सी साइट पर, डाउनलोड समय एफपीसी द्वारा लगभग आधे में काट दिया जाता है। APCu के साथ Lesti_FPC का उपयोग करने वाले लगभग 40,000 उत्पादों के साथ एक बड़ी साइट पर, मैं कैश के लिए 200MB से अधिक का उपयोग कर रहा हूं, जो स्पष्ट रूप से 8GB उत्पादन सर्वर पर कुछ भी नहीं है।

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