मैं ड्रुपल मेमोरी मुद्दों के साथ आखिरी बार एक दीवार के खिलाफ अपना सिर पीट रहा हूं। यहाँ विषय पर मेरा एकत्रित ज्ञान है:
1. दृश्य (कर सकते हैं) स्मृति का एक बहुत उपयोग करें
मुझे कुछ दृश्यों (और पैनलों और CTools और सब कुछ merlinofchaos उसकी ताकतवर, शक्तिशाली उंगलियों के साथ छूता है) से प्यार है, लेकिन कई रिश्तों के साथ कॉन्फ़िगरेशन बनाना संभव है जो बहुत अधिक स्मृति का उपयोग करते हैं। यदि आप अपने दृश्य अक्षम करते हैं और स्मृति समस्या दूर हो जाती है, तो संभवत: यह एक बुरी तरह से निर्मित दृश्य है, जो समस्या का कारण बनता है।
यदि यह एक दृश्य है, तो क्या करें और आपको वास्तव में काम करने के लिए उस दृश्य की आवश्यकता है? इसे शुरू करने के लिए कोड (वाया बल्क एक्सपोर्टर या फीचर्स; नीचे देखें) में डालने की कोशिश करें। मैंने हाथ से कोडेड व्यू जैसी कार्यक्षमता को बहुत कम सफलता के साथ बेहतर बनाया है। एक अन्य विचार यह है कि व्यू को एक अलग तरीके से फिर से बनाएं - यदि अंततः आपको जो मिल रहा है वह है टैक्सोनॉमी शर्तें, सुनिश्चित करें कि इसे बनाते समय व्यू का प्रकार एक टैक्सोनॉमी व्यू है; ऐसी सामग्री दृश्य न बनाएं, जो टैक्सोनॉमी शर्तों पर प्राप्त करने के लिए रिश्तों का उपयोग करती है।
यहाँ यह भी ध्यान देने योग्य बात हो सकती है कि पैनल भी कथित तौर पर बहुत अधिक मेमोरी का उपयोग करता है - मैंने वास्तव में इसे बेंचमार्क नहीं किया है इसलिए इसकी पुष्टि नहीं कर सकता।
2. डेटाबेस से कोड में सामान ले जाना एक बहुत अच्छा अभ्यास है
इसे महसूस करने के लिए मुझे कई Drupal साइट्स का सहारा लेना पड़ा, लेकिन डेटाबेस में UI के माध्यम से बनाई गई हर चीज़ को ध्यान में रखते हुए (विशेष रूप से व्यूज़ और पैनल्स कॉन्फ़िगरेशन) एक Drupal सबसे खराब अभ्यास है। क्यों? यह डेटाबेस पर लोड बढ़ाता है और संस्करण नियंत्रित नहीं किया जा सकता है। स्मृति उपयोग के संदर्भ में पहला बिंदु विशेष रूप से समस्याग्रस्त है - डेटाबेस से केवल सामग्री को लोड करने के बजाय, साइट को दृश्य घटकों को भी लोड करना होगा। Drupal तालिकाओं का उपयोग कैसे करता है, इस बात का विस्तार से वर्णन किया गया है: सब कुछ nth डिग्री पर अमल करने से, Drupal की कार्यक्षमता का प्रत्येक बिट एक नई तालिका का उपयोग करता है, जिसके परिणामस्वरूप कुछ अनुरोधों में एक बाज़ी तालिकाओं को एक साथ जोड़ा जाता है। यह कंप्यूटर साइंस के लोगों को हर्नियास (कैविट: लिंक मूर्खतापूर्ण) देता है, लेकिन वास्तव में सॉफ्टवेयर के एक टुकड़े के साथ टाला नहीं जा सकता है जैसा कि Drupal के रूप में मॉड्यूलर और उपयोगकर्ता के अनुकूल है।
समाधान? डेटाबेस में वर्तमान में रहने वाले कोड के बिट्स पैकेज करने के लिए बल्क एक्सपोर्टर (CTools के साथ शामिल) या फीचर्स का उपयोग करें ।
3. थीम्स भी मेमोरी खा सकते हैं
क्या आपकी थीम में बहुत सारी टेम्पलेट फाइलें हैं (यानी, थीमें / टेम्प्लेट्स में फाइलें /)? यदि हां, तो हर बार मेमोरी का उपभोग किया जाता है। यदि आप विशेष रूप से Drupal के बिट्स को प्रदर्शित होने से रोकने के लिए खाका बना रहे हैं, तो या तो प्रयास करें:
- अनुमतियाँ बदलना ताकि बिट विशिष्ट गैर-व्यवस्थापक उपयोगकर्ता भूमिकाओं के लिए दिखाई न दे।
- तत्वों को छिपाने के लिए सीएसएस का उपयोग करना।
पहली पसंद स्पष्ट रूप से सुरक्षा को प्रभावित करने वाले सामान के लिए आप क्या करना चाहते हैं - आप कुछ उपयोगकर्ताओं के लिए "संपादित करें" बटन को छिपाने के लिए सीएसएस का उपयोग नहीं करना चाहते हैं, केवल उनके पास है तो फायरबग या जो कुछ भी इसके माध्यम से अनहाइड करें।
4. कंट्राब मॉड्यूल पर ओवरबोर्ड न जाएं
हालांकि कभी-कभी किसी साइट को बहुत अधिक कंट्रिब मॉड्यूल की आवश्यकता होती है, ओवरबोर्ड न जाएं। प्रत्येक सक्षम (नोट: सक्षम) अक्षम मॉड्यूल किसी भी मेमोरी का उपयोग नहीं करते हैं) मॉड्यूल मेमोरी का उपयोग करता है। यह थोड़ा स्पष्ट है, लेकिन ध्यान देने योग्य है।
5. VPS एक झूठ है (कभी-कभी)
मेरे अनुभव में, कुछ बेईमान होस्टिंग कंपनियां Drupal साइटों को VPS सर्वर पर धकेलने का प्रयास कर रही हैं - वे अधिक महंगे हैं और यह कभी-कभी अधिक वर्डप्रेस वेबसाइटों के लिए साझा होस्टिंग स्थान को मुक्त करता है। इस तथ्य से स्थिति और खराब हो जाती है कि वेबहोस्ट अक्सर विज्ञापन नहीं करते हैं (या यह भी स्वेच्छा से आपको बताएं कि क्या पूछा गया है) साझा होस्टिंग के लिए ऊपरी मेमोरी सीमा क्या है।
काश, अक्सर अगर कोई साइट भारी ट्रैफ़िक के अंतर्गत नहीं है और अभी भी दुर्घटनाग्रस्त हो रही है, तो समस्या की संभावना कुछ और की तुलना में ड्रुपल के कॉन्फ़िगरेशन के साथ अधिक है। VPS के लिए एक उपयोगकर्ता को धक्का देना सिर्फ पानी को पिघला देता है और इससे निपटने के लिए और अधिक चर जोड़ता है (क्या यह वेबसर्वर है? PHP config? VPS अतिथि कॉन्फ़िगरेशन? VPS होस्ट कॉन्फ़िगरेशन, यहां तक कि?)।
6. जब अन्य सभी विफल हो जाते हैं, तो स्थानीयहोस्ट पर क्लोन करें और इसे एक छड़ी के साथ हरा दें
यह एक बड़ा कारण है कि लोग संस्करण नियंत्रण के साथ देव-मंचन-उत्पादन पद्धति का उपयोग करते हैं - जब बाकी सभी विफल हो जाते हैं, तो आप एक डीबी डंप कर सकते हैं, साइट को स्थानीय परीक्षण सर्वर पर क्लोन कर सकते हैं और फिर साइट पर रॉयली को गड़बड़ कर सकते हैं। वास्तव में उत्पादन सर्वर पर कुछ भी तोड़ने की चिंता किए बिना परीक्षण सर्वर।
स्मृति समस्याओं के लिए, इसका मतलब आम तौर पर एक-एक करके मॉड्यूल को अक्षम करना है जब तक कि समस्या का कारण नहीं बनता है। यह वेबहोस्ट से संबंधित मुद्दों की ओर भी इशारा कर सकता है - अगर साइट 128MB जैसी उचित चीज़ के लिए मेमोरी सेट के साथ एक स्थानीय इंस्टॉल पर पूरी तरह से ठीक चलती है, तो आप जानते हैं कि आपकी वेबहोस्ट दरार पर है।
tl; डॉ
मेरी हिम्मत है कि यह chain_menu_access है जो इस समस्या का कारण है। इसे अक्षम करने और कैश साफ़ करने का प्रयास करें, देखें कि क्या यह काम करता है।
मैं इस उत्तर को भी जोड़ूंगा क्योंकि मैं कोशिश करने के लिए अन्य चीजों के बारे में सोचता हूं ...