क्या सभी ड्रुपल पृष्ठ निष्पादन समय में योगदान देता है?


17

मेरे पास एक साइट है जिसकी मैं जांच कर रहा हूं जिसमें प्रमुख प्रदर्शन के मुद्दे हैं, मेम्चे का उपयोग करके मैं दोनों प्रश्नों की संख्या को कम करने में सक्षम था और कुल एक्सपेक्टेशन टाइम (3 सेकंड से 230 एमएस तक) में था, लेकिन पृष्ठ निष्पादन समय मुझे हटा रहा है (मैं हूं) डेवेल द्वारा आउटपुट किए गए मूल्यों को देखते हुए) मेरी समझ यह है कि पृष्ठ निष्पादन समय = निष्पादित करने के लिए php के लिए लिया गया समय है इसलिए मैंने APC स्थापित किया है और मैं APC नियंत्रण कक्ष (एपीसी द्वारा शिप किए गए एपीपीएफपी) में हिट दिखाते हुए php opcode कैश कर सकता हूं मेरे पृष्ठ का निष्पादन समय नीचे नहीं जाता है। इसलिए मुझे लगता है कि मेरा सवाल दो गुना है:

  • पेज निष्पादन के समय (बेहतर ढलान को धीमा करने में) क्या योगदान देता है? क्या यह सिर्फ php निष्पादित करने के लिए समय लिया गया है?
  • पृष्ठ निष्पादन समय को नीचे लाने के लिए मुझे क्या दृष्टिकोण अपनाना चाहिए। मैंने एपीसी की कोशिश की लेकिन ज्यादा मदद नहीं मिली

इस साइट पर उपयोग किए जाने वाले मॉड्यूल की पीएस संख्या सिर्फ विशाल (168) है, लेकिन अभी मैं उस सिफारिश को करने की स्थिति में नहीं हूं, इसकी अधिकता छेद की स्थिति में आग की तरह है।

संपादित करें: स्थानीय उदाहरण पर xhprof (mikeytown द्वारा अनुशंसित) चलने का आउटपुट, यह पागल लगता है मुझे लगता है कि बाद के परिणाम थ्रेशिंग के कारण हैं? समान url के लिए रन रन में काफी अंतर होता है और इसका बहुत अधिक संसाधन उपयोग होता है। यह भी निश्चित नहीं है कि यह उन मूल्यों को क्यों दिखा रहा है जो आज से नहीं हैं: | (मैंने अभी इस लैपटॉप पर xhprof स्थापित किया है)

स्थानीय उदाहरण पर xhprof चलाने का आउटपुट

जवाबों:


4

अपनी साइट का एक कैशग्राउंड प्राप्त करें। xdebug या xhprof एक उत्पन्न कर सकता है। यह आपको बताएगा कि कौन से फ़ंक्शंस सबसे लंबे समय तक चलने वाले हैं। जब तक आप ऐसा नहीं करते, तब तक यह एक बुरा अनुमान लगाने वाला खेल है।


अरे, सुझाव के लिए धन्यवाद, मैं सिर्फ अपने स्थानीय विकास संस्करण (सर्वर पर लैपटॉप नहीं) पर xhprof भागा और मैं इसे देखता हूं - picasaweb.google.com/lh/photo/… क्या यह वास्तविक है? मेरा मतलब है कि एक पृष्ठ के लिए 750Mb मेमोरी का उपभोग करना संभव है?
दीपेन

क्या यह थ्रेशिंग का सह-अंग हो सकता है? एक ही यूआरएल के लिए बाद में प्रोफाइल डेटा, अगर यू नीचे एक ही यूआरएल पर बहुत कम संसाधन लगता है, लेकिन एक अलग रन पूरी तरह से अलग और चरम संसाधन उपयोग दिखाता है।
दीपेन

1
यह वास्तव में निर्भर करता है, लेकिन 99.9% सेटअप के लिए यदि आपका 100 एमबी से अधिक रैम का उपयोग करना गलत है।
mikeytown2

मॉड्यूल की संख्या के अलावा, क्या कुछ और गलत हो सकता है? मुझे यकीन नहीं है कि अगर मॉड्यूल को तुरंत उत्पादन से हटाया जा सकता है। Btw, स्थानीय पर मैं nginx + php-fpm का उपयोग कर रहा हूं और उत्पादन पर साइट तेज cgi के साथ lighspeed का उपयोग कर रहा है।
दिपेन

1
आपको कैशग्रिंड में ड्रिल करने और यह पता लगाने की आवश्यकता है कि आपका सारा समय कौन सा फ़ंक्शन खा रहा है। img715.imageshack.us/i/cgrindout.png
mikeytown2

1

संपादित करें: मैंने मूल पोस्ट को गलत बताया है। 168 मॉड्यूल एक बहुत है, और 300 से 700ms SQL क्वेरी बहुत बड़ी है । जितने अधिक मॉड्यूल आप उपयोग करेंगे, उतने ही अधिक प्रश्न होंगे जैसे ही मॉड्यूल कुछ करता है।

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


जैसे ही आपके पास बहुत सारे मॉड्यूल एक ही समय में इंटरैक्ट होते हैं, ड्रुपल कोर डायनामिज्म पूरे भोर को धीमा कर देता है।

मैं कहता हूं, उदाहरण के लिए, यदि आप फ़ील्ड का उपयोग करने के बजाय हुक_नोड_लोड () समय पर डेटा लोड करने वाले बहुत सारे मॉड्यूल का उपयोग करते हैं, तो यह बहुत सारे प्रश्न करेगा जबकि फ़ील्ड उपयोग कैशिंग दक्षता सुनिश्चित करेगा।

रेंडर करने में बहुत अधिक समय लग सकता है, drupal_render () (प्रतिपादन एपीआई कुछ समय कहा जा रहा है) एपीआई का एक अच्छा टुकड़ा है (वास्तव में उपयोगी) लेकिन थोड़ा धीमा भी। PDO (D7) और पूर्ण DBTNG (जो रास्ते में महान है) पर स्विच करना भी गैर-नकारात्मक विलंबता को जोड़ता है।

उस ने कहा, अपने आप में कोर काफी तेज है (लेकिन यह बहुत अधिक SQL क्वेरी करता है, यहां तक ​​कि लगभग कुछ भी स्थापित नहीं है), खराब कोडित मॉड्यूल अक्सर अड़चन होते हैं।

APC रन कोड के आधार पर निष्पादन समय को 2 या 3 प्रति विभाजित कर सकता है। यदि आप इसे अच्छी तरह से कॉन्फ़िगर करते हैं (सभी APC अनुकूलन सक्षम करें, तो आधिकारिक APC मैनुअल अच्छी तरह से लिखा गया है और आपका मार्गदर्शन करेगा)।

यदि आप एक धीमी फ़ाइल प्रणाली (नेटवर्क फ़ाइल सिस्टम या धीमी गति से हार्ड ड्राइव) वाले बॉक्स पर हैं, तो यह निष्पादन समय पर एक दृश्य प्रभाव डाल सकता है। Drupal बहुत सारी छोटी फ़ाइलों से बना है , जो PHP को I / O को हर बार FS पर करने के लिए मजबूर करता है जब वह उनमें से किसी एक को लोड करता है (APC उस के लिए भी बहुत मदद करता है)।

यदि आप MySQL का उपयोग ठीक ट्यूनिंग करने के बारे में सोच रहे हैं तो एक गलत असंबद्ध DBMS भी काफी बदसूरत अड़चन हो सकता है। यदि आप एक साझा होस्टिंग पर हैं, अगर यह ड्रुपल विशिष्ट (या तैयार) DBMS और PHP स्टैक नहीं है तो संभवतः गलत तरीके से या गैर-ट्यून किया जाएगा, जो वास्तव में धीमी साइटों को जन्म दे सकता है।

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

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

मॉड्यूल से बचें जो हुक_इनिट () का उपयोग करता है, हुक_इनिट () हर पृष्ठ पर चलाया जा रहा है, भले ही आपको 403 या 404 मिलता हो, जो सब कुछ धीमा कर देता है (यह इमेजकेस को धीमा भी करता है। स्टाइल पीढ़ी का समय, और फाइलों पर 40 त्रुटियां होगी) धीमी गति से बस आपको यह बताने के लिए कि फ़ाइल मौजूद नहीं है)।


नमस्ते, जब मैं कहता हूं कि पृष्ठ निष्पादन का समय मेरा मतलब है कि वह मान जो पृष्ठ के निचले भाग में devel मॉड्यूल द्वारा दिखाया गया है और इसे सामान्य अनुरोधों में ड्रुपल अनुरोध / प्रतिक्रिया चक्र का उपयोग नहीं किया गया है जिसमें SQL प्रश्न आदि शामिल हैं, तो मेरा सवाल है। प्रमाणित उपयोगकर्ता के संदर्भ में। इसलिए जब पृष्ठ निष्पादन का समय समाप्त हो जाता है, तो इसमें sql क्वेरी भी शामिल होती है?
दीप

मुझे यकीन नहीं है कि अगर फाइलसिस्टम एक अड़चन होगी जैसा कि मैं 15k RPM लाइनक्स फाइलसिस्टम पर हूं। SQL क्वेरी पृष्ठ के आधार पर लगभग 300-700ms पर ले जा रही है, लेकिन पृष्ठ निष्पादन समय ~ = 3 सेकंड (devel द्वारा रिपोर्ट)। निश्चित नहीं है कि और क्या समस्या हो सकती है।
दीप

क्षमा करें, मैंने आपकी मूल पोस्ट को गलत बताया। डेवेल वैल्यू की गणना बूट से शटडाउन तक की जाती है (इस सहित बहुत सारे सामान करने के लिए डेवेल मॉड्यूल के पास स्वयं के पीएचपी शटडाउन हैंडलर हैं)। मुझे यकीन नहीं है कि जब यह शुरू होता है और बंद हो जाता है, लेकिन बहुत अधिक पूरे Drupal पृष्ठ का निर्माण समय होता है और व्यापार विवरण उस पृष्ठ निष्पादन समय में शामिल होते हैं। हां, इसमें सब कुछ शामिल है (SQL क्वेरी समय और विलंबता सहित), और इसकी अपनी विलंबता (डेवेल क्वेरी लॉगिंग का प्रदर्शन प्रभाव भी है)।
पियरे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.