2013-12-18 13 views
6

मेरी वेबसाइट को चेकआउट पर समस्याएं आ रही हैं। मैं Magento Enterprise 1.8 का उपयोग कर रहा हूं और मेरा चेकआउट मॉड्यूल आइडिया का ऑनस्टेपकेकआउट है।Magento 1.8: ग्राहक प्रतीक्षा कर रहे हैं जब ग्राहक

मुद्दा हम देख रहे हैं कि eav_entity_store तालिका एक निहायत लंबे समय (51 सेकंड तक) Mage_Eav_Model_Entity_Type के लिए आदेश संख्या लौटने के लिए ले जा रहा है है।

मुझे क्या पता है कि यह प्राप्त करने के लिए चलने वाली क्वेरी लेनदेन को 'अद्यतन के लिए' के ​​रूप में चलाया जाता है, इसलिए लेन-देन पूरा होने तक पंक्ति को लॉक किया जाता है। मैंने कोड के अन्य हिस्सों के साथ-साथ लेन-देन के दौरान PHP कोड को देखा है जहां पंक्ति लॉक है (हम इनो डीबी का उपयोग कर रहे हैं ताकि लेनदेन किए जाने के बाद लॉक जारी किया जा सके) और मैं बस नहीं देख रहा हूं वहां कुछ भी (या धीमी क्वेरी लॉग में) जो लॉक को 51 सेकंड के करीब कहीं भी इंतजार कर रहा है।

मैंने माना है कि अनुरोधों को ढेर किया जा रहा है और धीरे-धीरे समय के साथ आगे बढ़ने के बाद, लेकिन मैं क्वेरी समय 6ms से 20k ms से 50k ms 1,2,3 तक देख रहा हूं। यह 100-200 अनुरोधों का मुद्दा नहीं है, क्योंकि इन दिनों केवल कुछ दर्जन हैं।

मुझे पता है कि MySQL ब्लैक लॉकिंग का उपयोग करता है, लेकिन इस तालिका से संबंधित कोई भी एफके संबंधित नहीं है। दो बीटीआरई इंडेक्स हैं जो एक बिंदु पर एफके थे लेकिन बाद में बदल दिया गया है (जो साल पहले हुआ था)। उन लोगों के लिए जो गैर-Magento savy हैं, eav_entity_store तालिका में 50 से कम पंक्तियां हैं और केवल 5 कॉलम चौड़ी (4 छोटी और एक वर्चर) है। मुझे गंभीरता से संदेह है या अनुचित इंडेक्सिंग अपराधी है। हालांकि, टीएलडीआर की भावना में, मैं कहूंगा कि दो बीटीईई इंडेक्स दो कॉलम हैं जिनसे हम इस तालिका से चयन करते हैं।

एक संभावना यह है कि मैं, के रूप में ही इस तालिका को पढ़ता है एक यौगिक सूचकांक के साथ एक के इंडेक्स बदलना पड़ सकता है (एक प्रश्न है कि पढ़ता से आ रहे हैं [सूचकांक एक साथ कॉलम] और [सूचकांक बी के साथ कॉलम] से है)। मुझे बस यह नहीं पता कि पंक्ति-स्तर लॉकिंग इस क्वेरी को तालिका में मौजूद इंडेक्स के साथ तालिका में किसी अन्य पंक्ति तक पहुंचने से रोकती है या नहीं।

इस बिंदु पर, मैं आश्वस्त हो गया हूं कि अंतर्निहित मुद्दा कड़ाई से डीबी से संबंधित है, लेकिन इसके बारे में किसी भी Magento या MySQL सलाह की सराहना की जाएगी। जो भी वास्तव में इसे पढ़ रहा है, वह उम्मीद कर सकता है कि मैंने पहले से ही कई विकल्पों को समाप्त कर दिया है और गंभीरता से यहां फंस गया हूं। कोई भी जानकारी जो आपको लगता है वह मदद कर सकती है। धन्यवाद।

संपादित सटीक त्रुटि हम जो देख रहे है: त्रुटि संदेश: SQLSTATE [HY000]: सामान्य त्रुटि: 1205 ताला प्रतीक्षा टाइमआउट को पार कर; लेनदेन को पुनरारंभ करने का प्रयास करें

+0

जब आप धीमे क्वेरी को मैन्युअल रूप से चलाते हैं तो क्या आप पुन: उत्पन्न कर सकते हैं? उस स्थिति में आप इसे प्रोफाइल कर सकते हैं। –

+0

दुर्भाग्य से मैं पुन: उत्पन्न करने में सक्षम नहीं हूं। डीबी होस्टिंग दूरस्थ रूप से किया जाता है। मैं डीबीए से वापस सुनने के लिए इंतजार कर रहा हूं कि वे किस प्रकार की जानकारी दे सकते हैं। एक बार ऐसा करने के बाद मैं यहां अपडेट करूंगा। Magento 1.8 पर –

+0

एक ही समस्या ... शायद यह यूपीएस पक्ष पर एक समस्या है और Magento नहीं है? – WonderLand

उत्तर

0

समस्या हल हो गई। MySQL के साथ कोई समस्या नहीं थी। किसी कारण से, चालान संख्या की पीढ़ी एक अश्लील समय ले रही थी। कंपनी Magento से चालान का उपयोग नहीं करता है। उन्हें बंद कर दिया। समस्या सुलझ गयी। इनवॉइस पीढ़ी के साथ विशेष रूप से समस्या के बारे में कोई पूर्ण आरसीए नहीं किया गया था।

+0

मैं Magento समुदाय 1.8.0 का उपयोग कर रहा हूं और मेरा चेकआउट मॉड्यूल आइडिया का ऑनस्टेपकेकआउट है। एक ही समस्या का सामना करना, क्या आप मुझे सही तरीके से मार्गदर्शन कर सकते हैं जहां मुझे चालान फॉर्म को चेक या बंद करना है? –

+1

शायद यह ठीक करने का सबसे अच्छा तरीका नहीं है, लेकिन हमने इसे इस तरह से किया क्योंकि हम Magento की ताजा प्रति के लिए हमारे वर्तमान इंस्टॉल को डंप कर रहे थे। इस मार्ग पर जाने से पहले मैं ख्याल रखूंगा।Mage_Eav_Model_Entity_Type :: fetchNewIncrementId में, लाइन 150 के आसपास (मेरी लाइनें थोड़ी अलग हैं क्योंकि फ़ाइल संशोधित की गई थी) लाइन के बाद $ type = $ this-> getEntityTypeCode(); कुछ जोड़ें ($ type === 'चालान') वापसी 'INV0' कुछ भी ठीक करने का कोई तरीका नहीं है, लेकिन इसे चेकआउट फिर से चल रहा है। –

+0

धन्यवाद आपकी मदद के लिए डैनी –

संबंधित मुद्दे