मैंने इसे न्यू रेलिक पर भी काफी देखा है।
मैंने जो कुछ देखा है, उसके कुछ अलग कारण हैं, मुझे इस मुद्दे की पूरी समझ नहीं है, लेकिन यह कुछ ऐसा है जिसे मैं हाल ही में देख रहा हूं। यहाँ मेरा निष्कर्ष है।
Magento, लॉकिंग, और नए अवशेष में सत्र
Magento में प्रत्येक नियंत्रक क्रिया सत्र का उपयोग करती है, चाहे उसे इसकी आवश्यकता हो या न हो। Mage_Core_Controller_Varien_Action :: preDispatch में सत्र उत्सुकता से त्वरित है
यदि आपके पास सत्र लॉकिंग सक्षम है, तो इसका मतलब है कि अनुरोध पूरा होने तक आपके सत्र की अवधि बंद हो जाती है। मुझे उस कोड का बिट नहीं मिला है जो सत्र लॉक को अभी तक जारी करता है, लेकिन मुझे पूरा यकीन है कि यह कहीं न कहीं है।
अंततः इसका मतलब है कि यदि आप एक ही सत्र का उपयोग करके एक स्थान से Magento नियंत्रक कार्यों के लिए कई समवर्ती अनुरोधों को बंद कर देते हैं, तो आपको सत्र को आगे बढ़ने के लिए पूरा करने और अनलॉक करने के लिए उन अनुरोधों में से कुछ का इंतजार करना होगा। मैं आमतौर पर इसे Mage_Core_Model_Session_Abstract_Varien::start
~ 30 सेकंड के लिए अटके नए अवशेष पर एक धीमे लेनदेन के रूप में देखता हूं (मेरा सत्र लॉक वेट टाइमआउट मुझे लगता है)।
न्यू रेलिक की इस रिपोर्ट में कई डाउनसाइड्स हैं जैसे कि मैं इसे देखता हूं
- कुल औसत प्रतिक्रिया समय को धीमा कर देता है, क्योंकि ये अनुरोध धीमे से हैं अन्यथा उन्हें होना चाहिए था।
- न्यू रेलिक ने सबसे धीमी लेन-देन का एक नमूना रिकॉर्ड किया है, अगर मेरे पास प्रदर्शन की अड़चनें हैं जो उदाहरण के लिए 20 सेकंड लेती हैं तो नया रेलिक स्वचालित रूप से मेरे लिए रिपोर्ट नहीं करेगा यदि एक ही URL सत्र लॉकिंग टाइमआउट से ग्रस्त है। टाइमआउट उपयोगी डेटा छुपा रहे हैं।
कारण
मैंने इसके लिए कुछ सामान्य कारण देखे हैं, किसी भी तरह से एक निश्चित सूची नहीं
बॉट
Baidu और Yandex जैसे क्रॉलर थोड़ा असभ्य होने के कारण और वेबसाइट को पीट रहे हैं। वे एक ही स्थान से कई अनुरोधों को निकाल रहे हैं, एक ही सत्र का उपयोग कर, और सत्र लॉकिंग तंत्र को ट्रिप कर रहे हैं, इसलिए नए अवशेष में धीमी गति से लेनदेन दिखा रहे हैं।
Ajax Magento की नियंत्रक क्रियाओं को कहता है
वार्निश की गई वेबसाइटों के साथ ग्राहक के विशिष्ट डेटा को देखभाल के साथ लोड किया जाना चाहिए, कुछ वेबसाइट आवश्यक डेटा प्राप्त करने के लिए Magento बैकएंड पर ajax कॉल का उपयोग करके इसे प्रबंधित करती हैं। मैंने उत्पाद की विशेष जानकारी प्राप्त करने के लिए बैकएंड पर ajax कॉल्स का उपयोग करते हुए कुछ वेबसाइटों को भी देखा है, जैसे कि किसी वस्तु की बिक्री पर स्टॉक में बची राशि।
यदि कोई एकल पृष्ठ पृष्ठ लोड पर बैकएंड पर कई अजाक्स कॉल चलाता है, तो यह संभावित रूप से सत्र लॉकिंग तंत्र को ट्रिगर कर सकता है। अधिक अजाक्स वापस Magento के लिए कहता है और अधिक संभावना है कि आप लॉकिंग का अनुभव कर रहे हैं।
वार्निश ई.एस.आई.
वास्तव में ऊपर के रूप में, ajax कॉल का उपयोग करने के बजाय एज साइड का उपयोग करता है, जिसमें बैकएंड के लिए नए कॉल प्रतीत होते हैं।
मेरी योजना
मैंने अभी तक इस पर कार्रवाई नहीं की है इसलिए यह अभी भी विशुद्ध रूप से सैद्धांतिक है, लेकिन यह कुछ ऐसा है जो मैं अगले कुछ महीनों में देख रहा हूं।
मैं इस समस्या को मैज टाइटन्स यूके 2016 सम्मेलन के दौरान लाया और फैब्रीज़ियो ब्रांका ने मुझे निम्नलिखित मॉड्यूल की ओर इशारा किया: https://github.com/AOEpeople/Aoe_BlackHoleSession ।
एक नियमित अभिव्यक्ति के आधार पर मॉड्यूल बॉट्स को वास्तविक सत्र बनाने से रोकेगा, इसका यह लाभ होना चाहिए कि कोई सत्र लॉक नहीं मारा जाएगा, और यह कि आपके सत्र संसाधनों को कठोर बॉट्स द्वारा पीटा नहीं जाएगा। बॉट्स को अब आपके नए अवशेष रीडिंग को प्रदूषित नहीं करना चाहिए।
कैश किए गए पृष्ठों पर ग्राहक डेटा प्राप्त करने के लिए अजाक्स / ईएसआई कॉल के लिए कुछ भी नहीं है जो आप कर सकते हैं जो मैं देख सकता हूं। ग्राहक विशिष्ट डेटा को पुनः प्राप्त करने के लिए आपको सत्र तक पहुँच की आवश्यकता है।
हालाँकि , कैटलॉग / ईएसआई कॉल के लिए कैटलॉग विशिष्ट डेटा (जैसे सीमित स्टॉक) प्राप्त करने के लिए मुझे उस अनुरोध पर मौजूद रहने के लिए सत्र की कोई आवश्यकता नहीं है। भविष्य के लिए मेरी योजना Aoe_BlackHoleSession
मॉड्यूल के विस्तार का परीक्षण करना है ताकि मैं किसी विशिष्ट URL के लिए सत्रहीन होने के अनुरोध को समाप्त कर सकूं।
मैं ईएसआई के आंतरिक लोगों से कम परिचित हूं, इसलिए दुख की बात है कि मेरे पास वहां टिप्पणी करने के लिए बहुत ज्यादा नहीं है।
एक विकल्प
सम्मेलन के दौरान फैब्रीज़ियो ब्रांका ने कहा कि वह बिना किसी दुष्प्रभाव के सत्र लॉकिंग को पूरी तरह से अक्षम करने में सक्षम था, अपने जोखिम पर परीक्षण करें।