मेमोरी की सीमा बढ़ाएं घातक त्रुटि में मदद नहीं करता है: 416 पर लाइन /… के मॉड्यूल / विचार / विचार


11

मैंने तीन सप्ताह पहले Drupal 7.14 से 7.15 पर स्विच किया है और इसलिए, मैं बहुत परिष्कृत (मेरे लिए) मेमोरी त्रुटियों की एक श्रृंखला का सामना कर रहा हूं । उन त्रुटियों को किसी भी समय हो सकता है जब मैं प्रदर्शन में कैश को साफ करने या अपडेट स्क्रिप्ट चलाने की कोशिश कर रहा हूं।

मेरी होस्टिंग कंपनी ने मेरी स्मृति सीमा php.ini में 126 M, 256 M, 512 M और यहां तक ​​कि 1024 M तक बढ़ा दी है। मैंने अपनी साइट को VPS से साझा किया है, लेकिन त्रुटि अविश्वसनीय रूप से अभी भी होती है। मेरे पास कोई रास्ता नहीं है और आगे बढ़ने का कोई विचार नहीं है।

यहाँ त्रुटियाँ हैं:

  • घातक त्रुटि: 536870912 बाइट्स की स्वीकृत मेमोरी आकार (30 बाइट्स आवंटित करने का प्रयास) /home/example/public_html/sites/all/modules/views/views.module पर पंक्ति 416 में
  • घातक त्रुटि: 2736 लाइन पर 536870912 बाइट्स की आबंटित स्मृति आकार (108 बाइट्स आवंटित करने का प्रयास) /home/example/public_html/includes/menu.inc में

  • घातक त्रुटि: 536870912 बाइट्स की अनुमत मेमोरी आकार (71 बाइट्स आवंटित करने की कोशिश की गई) /home/example/public_html/sites/all/modules/chain_menu_ncess/chain_menu_access.module में लाइन 59 पर

  • लाइन 93 पर /home/example/public_html/sites/all/modules/views/includes/base.inc में 64 बाइट्स आवंटित करें


आपका चरम ट्रैफ़िक क्या है (पृष्ठ / सेकंड) यह भी कि कितना डेटा (नोड्स) दृश्य वापस लाने की कोशिश कर रहा है?
चेरोविम


2
क्या आप संयोग से कोई ऐसा दृश्य रखते हैं जो बड़ी संख्या में परिणाम लौटाता है और प्रारूप के लिए यह खेतों के बजाय सामग्री को लोड करता है? मैंने इस बाधा प्रदर्शन को पहले भी कई बार देखा है।
जेपीडो

हाय दोस्तों! आपके उत्तर के लिए बहुत बहुत धन्यवाद। मैं यह कहना चाहता हूं कि वें वेबसाइट रखरखाव मोड में है और इसमें परीक्षण उद्देश्य के लिए केवल कुछ मात्रा में सामग्री (नोड्स) हैं। साइट केवल क्रॉलर द्वारा देखी गई है जैसा कि मैंने अपनी पोस्ट में उल्लेख किया है, नोड drupal.org/node/76156 में सुझाए गए php.ini समाधान में मेमोरी की सीमा मेरे मामले में मदद नहीं करती है। फ़ील्ड के बजाय सामग्री लोड करने के विचारों के लिए। मैं यह पता लगाने की कैसे चाहते हैं
salift

1
क्या आपने ड्रुपल 7.14 पर वापस जाने की कोशिश की है? यदि ड्रुपल 7.15 में अपग्रेड करने से वह समस्या उत्पन्न हुई, तो वापस स्विच करने का प्रयास क्यों न किया जाए? मेरा कूबड़ यह है कि आपके किसी मॉड्यूल में अनंत पुनरावृत्ति है। आपके दृश्य संबंधित मॉड्यूल क्या हैं?
जॉनाथन एलमोर

जवाबों:


13

मैं ड्रुपल मेमोरी मुद्दों के साथ आखिरी बार एक दीवार के खिलाफ अपना सिर पीट रहा हूं। यहाँ विषय पर मेरा एकत्रित ज्ञान है:

1. दृश्य (कर सकते हैं) स्मृति का एक बहुत उपयोग करें

मुझे कुछ दृश्यों (और पैनलों और CTools और सब कुछ merlinofchaos उसकी ताकतवर, शक्तिशाली उंगलियों के साथ छूता है) से प्यार है, लेकिन कई रिश्तों के साथ कॉन्फ़िगरेशन बनाना संभव है जो बहुत अधिक स्मृति का उपयोग करते हैं। यदि आप अपने दृश्य अक्षम करते हैं और स्मृति समस्या दूर हो जाती है, तो संभवत: यह एक बुरी तरह से निर्मित दृश्य है, जो समस्या का कारण बनता है।

यदि यह एक दृश्य है, तो क्या करें और आपको वास्तव में काम करने के लिए उस दृश्य की आवश्यकता है? इसे शुरू करने के लिए कोड (वाया बल्क एक्सपोर्टर या फीचर्स; नीचे देखें) में डालने की कोशिश करें। मैंने हाथ से कोडेड व्यू जैसी कार्यक्षमता को बहुत कम सफलता के साथ बेहतर बनाया है। एक अन्य विचार यह है कि व्यू को एक अलग तरीके से फिर से बनाएं - यदि अंततः आपको जो मिल रहा है वह है टैक्सोनॉमी शर्तें, सुनिश्चित करें कि इसे बनाते समय व्यू का प्रकार एक टैक्सोनॉमी व्यू है; ऐसी सामग्री दृश्य न बनाएं, जो टैक्सोनॉमी शर्तों पर प्राप्त करने के लिए रिश्तों का उपयोग करती है।

यहाँ यह भी ध्यान देने योग्य बात हो सकती है कि पैनल भी कथित तौर पर बहुत अधिक मेमोरी का उपयोग करता है - मैंने वास्तव में इसे बेंचमार्क नहीं किया है इसलिए इसकी पुष्टि नहीं कर सकता।

2. डेटाबेस से कोड में सामान ले जाना एक बहुत अच्छा अभ्यास है

इसे महसूस करने के लिए मुझे कई Drupal साइट्स का सहारा लेना पड़ा, लेकिन डेटाबेस में UI के माध्यम से बनाई गई हर चीज़ को ध्यान में रखते हुए (विशेष रूप से व्यूज़ और पैनल्स कॉन्फ़िगरेशन) एक Drupal सबसे खराब अभ्यास है। क्यों? यह डेटाबेस पर लोड बढ़ाता है और संस्करण नियंत्रित नहीं किया जा सकता है। स्मृति उपयोग के संदर्भ में पहला बिंदु विशेष रूप से समस्याग्रस्त है - डेटाबेस से केवल सामग्री को लोड करने के बजाय, साइट को दृश्य घटकों को भी लोड करना होगा। Drupal तालिकाओं का उपयोग कैसे करता है, इस बात का विस्तार से वर्णन किया गया है: सब कुछ nth डिग्री पर अमल करने से, Drupal की कार्यक्षमता का प्रत्येक बिट एक नई तालिका का उपयोग करता है, जिसके परिणामस्वरूप कुछ अनुरोधों में एक बाज़ी तालिकाओं को एक साथ जोड़ा जाता है। यह कंप्यूटर साइंस के लोगों को हर्नियास (कैविट: लिंक मूर्खतापूर्ण) देता है, लेकिन वास्तव में सॉफ्टवेयर के एक टुकड़े के साथ टाला नहीं जा सकता है जैसा कि Drupal के रूप में मॉड्यूलर और उपयोगकर्ता के अनुकूल है।

समाधान? डेटाबेस में वर्तमान में रहने वाले कोड के बिट्स पैकेज करने के लिए बल्क एक्सपोर्टर (CTools के साथ शामिल) या फीचर्स का उपयोग करें ।

3. थीम्स भी मेमोरी खा सकते हैं

क्या आपकी थीम में बहुत सारी टेम्पलेट फाइलें हैं (यानी, थीमें / टेम्प्लेट्स में फाइलें /)? यदि हां, तो हर बार मेमोरी का उपभोग किया जाता है। यदि आप विशेष रूप से Drupal के बिट्स को प्रदर्शित होने से रोकने के लिए खाका बना रहे हैं, तो या तो प्रयास करें:

  1. अनुमतियाँ बदलना ताकि बिट विशिष्ट गैर-व्यवस्थापक उपयोगकर्ता भूमिकाओं के लिए दिखाई न दे।
  2. तत्वों को छिपाने के लिए सीएसएस का उपयोग करना।

पहली पसंद स्पष्ट रूप से सुरक्षा को प्रभावित करने वाले सामान के लिए आप क्या करना चाहते हैं - आप कुछ उपयोगकर्ताओं के लिए "संपादित करें" बटन को छिपाने के लिए सीएसएस का उपयोग नहीं करना चाहते हैं, केवल उनके पास है तो फायरबग या जो कुछ भी इसके माध्यम से अनहाइड करें।

4. कंट्राब मॉड्यूल पर ओवरबोर्ड न जाएं

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

5. VPS एक झूठ है (कभी-कभी)

मेरे अनुभव में, कुछ बेईमान होस्टिंग कंपनियां Drupal साइटों को VPS सर्वर पर धकेलने का प्रयास कर रही हैं - वे अधिक महंगे हैं और यह कभी-कभी अधिक वर्डप्रेस वेबसाइटों के लिए साझा होस्टिंग स्थान को मुक्त करता है। इस तथ्य से स्थिति और खराब हो जाती है कि वेबहोस्ट अक्सर विज्ञापन नहीं करते हैं (या यह भी स्वेच्छा से आपको बताएं कि क्या पूछा गया है) साझा होस्टिंग के लिए ऊपरी मेमोरी सीमा क्या है।

काश, अक्सर अगर कोई साइट भारी ट्रैफ़िक के अंतर्गत नहीं है और अभी भी दुर्घटनाग्रस्त हो रही है, तो समस्या की संभावना कुछ और की तुलना में ड्रुपल के कॉन्फ़िगरेशन के साथ अधिक है। VPS के लिए एक उपयोगकर्ता को धक्का देना सिर्फ पानी को पिघला देता है और इससे निपटने के लिए और अधिक चर जोड़ता है (क्या यह वेबसर्वर है? PHP config? VPS अतिथि कॉन्फ़िगरेशन? VPS होस्ट कॉन्फ़िगरेशन, यहां तक ​​कि?)।

6. जब अन्य सभी विफल हो जाते हैं, तो स्थानीयहोस्ट पर क्लोन करें और इसे एक छड़ी के साथ हरा दें

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

स्मृति समस्याओं के लिए, इसका मतलब आम तौर पर एक-एक करके मॉड्यूल को अक्षम करना है जब तक कि समस्या का कारण नहीं बनता है। यह वेबहोस्ट से संबंधित मुद्दों की ओर भी इशारा कर सकता है - अगर साइट 128MB जैसी उचित चीज़ के लिए मेमोरी सेट के साथ एक स्थानीय इंस्टॉल पर पूरी तरह से ठीक चलती है, तो आप जानते हैं कि आपकी वेबहोस्ट दरार पर है।

tl; डॉ

मेरी हिम्मत है कि यह chain_menu_access है जो इस समस्या का कारण है। इसे अक्षम करने और कैश साफ़ करने का प्रयास करें, देखें कि क्या यह काम करता है।

मैं इस उत्तर को भी जोड़ूंगा क्योंकि मैं कोशिश करने के लिए अन्य चीजों के बारे में सोचता हूं ...


... और ठीक इसी तरह की बात मैंने इस सवाल पर की थी जब मैंने इस सवाल का जवाब दिया था! विशेष रूप से 2. 110 आप को अच्छा सर। :) उम्मीद है कि यह दूसरों से कुछ उपयोगी टिप्पणियों को थोड़ा अलग अनुभवों के साथ भी
आकर्षित करेगा

ps मैंने कई स्थानों पर सुना है कि फ़ाइलों को पार्स करने में भी अक्षम मॉड्यूल एक निश्चित मात्रा में मेमोरी का उपयोग करते हैं। मैंने लोगों को यह कहते हुए देखा है कि सभी php / inc फाइलें किसी न किसी तरह से पार्स हो जाती हैं, हालांकि यह सही नहीं लगता है (अधिक संभावना है कि सिर्फ जानकारी वाली फाइलें)। किसी भी विचार अगर इसमें कोई सच्चाई है?
user56reinstatemonica8

धन्यवाद! मुझे पूरा यकीन है कि फ़ाइलें लोड करते समय ड्रुपल की काफी मेमोरी कंसिस्टेंट होती है - यदि आप XHProf चलाते हैं, तो file_scan_directoryपर्याप्त मेमोरी का उपयोग करने के लिए कॉल की संख्या । हालांकि, इस बात की पुष्टि करने के बाद कि मैं कुछ सामानों का परीक्षण करूंगा।
aendrew

यदि अक्षम मॉड्यूल किसी भी मेमोरी का उपयोग करते हैं, तो यह काफी असंवेदनशील है। मैंने देखा कि एक मॉड्यूल को हटाने से पहले और बाद में डेवेल द्वारा कितनी मेमोरी रिपोर्ट की गई थी - जबकि फ़ाइलों को हटाने के बाद पृष्ठ ताज़ा करने पर एक छोटी (<1MB) स्पाइक दिखाई दी, यह अगले रीफ़्रेश पर पूर्व-विलोपन मानों पर वापस लौट आया। यह मुझे विश्वास दिलाता है कि द्रुपाल ए। बूट पर मॉड्यूल निर्देशिका को देखने के लिए देखते हैं कि क्या कोई नई .info फाइलें हैं। मॉड्यूल के विवरण को इसकी systemतालिका c में जोड़ता है । System.status फ़ील्ड प्रविष्टियों के साथ किसी भी मॉड्यूल को लोड करता है 1। अगर कोई भी इसकी पुष्टि या नापसंद कर सकता है, तो मैं इसकी सराहना करूंगा।
aendrew

2

अनुरोध में क्या हो रहा है, इसका निरीक्षण करने के लिए आप XHProf या Xdebug की तरह निर्मित प्रोफाईल में PHP प्रोफाइलर लगाने की कोशिश कर सकते हैं।


एक बार जब आपको पता चल गया कि आपको किन भागों की विशेष रूप से स्मृति की आवश्यकता है, तो आपने चरण 1 की है। Step2 वास्तव में यह समझने की कोशिश कर रहा है कि यह उस मेमोरी का उपयोग क्यों कर रहा है और इसे कैसे कम किया जाए। ऊपर के लोग परिणाम आदि में बहुत अधिक वस्तुओं के बारे में बात करते हैं। सामान्य तौर पर यह एक प्रक्रिया है जिसे सरल नहीं बताया जा सकता है।
डैनियल वीनर

1

दृश्य एक स्मृति हॉग है। Drupal की कैशिंग मदद कर सकती है। Drupal केवल सक्रिय मॉड्यूल को लोड करता है हालांकि अगर वे तालिकाओं का निर्माण करते हैं या अन्य ऑब्जेक्ट हैं जो चारों ओर लटका सकते हैं। केवल स्थापना रद्द करने से अधिकांश कलाकृतियों को हटा दिया जाएगा। हम ड्रुपल के प्राधिकरण / अनुमतियों का उपयोग करते हैं और अपने स्वयं के मॉड्यूल लिखते हैं। सबसे अच्छा नहीं है लेकिन प्रदर्शन बहुत बेहतर और धुन के लिए आसान है। हम WP के लिए भी यही करते हैं।


0

मैं अपने मामले में कैश सिस्टम (बूस्ट और बूस्ट एक्सपायर मॉड्यूल) द्वारा मेमोरी लिमिट समस्या उत्पन्न करता था। यह मुझे मॉड्यूल या विचारों को अपडेट करने के लिए समस्या देता है। एक बार विकलांग बूस्ट मॉड्यूल सभी ठीक काम करते हैं।

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