Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Rails प्रदर्शन में महारत: अपने ऐप्स का निदान और त्वरण करने का सिद्ध दृष्टिकोण

क्या आपका Rails ऐप धीमा है?

जब जो एक साधारण व्यू होना चाहिए उसे लोड होने में सेकंड लगते हैं, तो आपके पास खुदाई करने लायक समस्या है।

आपके पास बहुत सारे डेटाबेस कॉल या कुछ धीमे मेथड हो सकते हैं। या शायद यह वह स्पीडअप लूप है जिसे किसी ने आपके कोड में डाला और भूल गया।

आपको यह पता लगाने में मदद करने के लिए बहुत सारे टूल मिल सकते हैं कि आपके ऐप को क्या धीमा कर रहा है। कुछ हफ्ते पहले, मैंने rbtrace के बारे में बात की थी। New Relic के rpm जेम ने भी मेरे ऐप्स को तेज करने में मदद की है।

लेकिन मेरा पसंदीदा टूल प्रदर्शन समस्याओं का पता लगाने के लिए इससे कहीं अधिक करता है। बॉक्स से बाहर, यह आपको दिखाता है कि आपका कोड क्या कर रहा है। लेकिन जब आप इसमें एक प्लगइन जोड़ते हैं, तो यह और भी शक्तिशाली हो जाता है। यह आपको आपके ऐप की प्रदर्शन समस्याओं को देखने में मदद करता है, नेत्रहीन। और यह आपको धीमे ऐप्स को तेजी से ढूंढने और ठीक करने में मदद कर सकता है।

मेरा पसंदीदा Rails प्रोफाइलर

मेरा पसंदीदा Rails प्रदर्शन टूल rack-mini-profiler कहलाता है। जब आप उस जेम को अपने ऐप में जोड़ते हैं, तो आपको अपने प्रत्येक पेज पर एक छोटा इंडिकेटर मिलता है। यह ऐसा दिखता है:

Rails प्रदर्शन में महारत: अपने ऐप्स का निदान और त्वरण करने का सिद्ध दृष्टिकोण

अगर आप उस बॉक्स पर क्लिक करते हैं, तो यह विस्तारित होता है और आप सभी प्रकार की अच्छी चीजें देख सकते हैं। कौन से SQL स्टेटमेंट चले, पार्शियल रेंडर करने में कितना समय लगा, और बहुत कुछ:

Rails प्रदर्शन में महारत: अपने ऐप्स का निदान और त्वरण करने का सिद्ध दृष्टिकोण

MiniProfiler आपको हर पेज को लोड होने में कितना समय लगता है, इसकी निरंतर याद दिलाता है। यह आपको यह सीखने में मदद करता है कि आपका ऐप कैसा प्रदर्शन कर रहा है। आप एक सहज ज्ञान विकसित करेंगे कि कौन से पेज धीमे हैं, और कौन से तेज़। आप ध्यान देना शुरू कर देंगे जब एक पेज अप्रत्याशित रूप से लंबा समय लेता है। और आप इसे तुरंत ठीक करना शुरू कर सकते हैं, जबकि यह अभी भी आपके दिमाग में है।

MiniProfiler और अधिक कर सकता है। लेकिन पहले, आपको flamegraph जेम इंस्टॉल करना होगा।

जब आप ऐसा करते हैं, तो आप अपने ऐप के प्रदर्शन को देखने का एक नया तरीका अनलॉक करेंगे।

Flamegraphs: ठीक वैसे ही मजेदार जैसे वे सुनाई देते हैं

एक flamegraph ऐसा दिखता है:

Rails प्रदर्शन में महारत: अपने ऐप्स का निदान और त्वरण करने का सिद्ध दृष्टिकोण

नाम कहां से आता है, यह काफी स्पष्ट है, है ना?

rack-mini-profiler जेम और flamegraph जेम इंस्टॉल करने के बाद, आप अपने किसी भी अनुरोध के लिए एक flamegraph देख सकते हैं। बस एक HTTP पैरामीटर के रूप में pp=flamegraph जोड़ें, जो ऐसा दिखेगा:

https://www.example.com/restaurants?pp=flamegraph 

Flamegraph पॉप अप होगा, और आप ज़ूम इन और आउट कर सकते हैं, चारों ओर स्क्रॉल कर सकते हैं, और तलाशने के लिए दिलचस्प चीजें ढूंढने की कोशिश कर सकते हैं।

Flamegraph में प्रत्येक "परत" एक स्टैक ट्रेस में एक लाइन है:

Rails प्रदर्शन में महारत: अपने ऐप्स का निदान और त्वरण करने का सिद्ध दृष्टिकोण

और क्षैतिज अक्ष समय है। इसलिए ग्राफ का सबसे बाईं ओर वह है जब आपका अनुरोध शुरू हुआ, और सबसे दाईं ओर वह है जब अनुरोध समाप्त हुआ।

तो, यह निश्चित रूप से अच्छा दिखता है। लेकिन आप flamegraph के साथ क्या कर सकते हैं?

Flamegraph का उपयोग कैसे करें

क्योंकि X अक्ष समय को दर्शाता है, आप वास्तव में एक स्पष्ट तस्वीर प्राप्त कर सकते हैं कि आपका ऐप कहां अटक रहा है। सबसे चौड़ी परतें चलने में सबसे लंबा समय लेती हैं। वे पहले क्षेत्र हैं जिनकी आपको जांच करनी चाहिए, क्योंकि उन्हें तेज करने का सबसे बड़ा प्रभाव हो सकता है।

आपका ऐप आपके व्यू को रेंडर करने में कितना समय खर्च कर रहा है? कंट्रोलर एक्शन में? डेटाबेस को हिट करने में? पार्शियल रेंडर करने में?

वे सभी वास्तव में नेत्रहीन रूप से देखना आसान है:

Rails प्रदर्शन में महारत: अपने ऐप्स का निदान और त्वरण करने का सिद्ध दृष्टिकोण

एक और उपयोगी चीज है जो एक flamegraph आपको दिखा सकता है:

क्या आप बहुत सारे स्पाइक्स देखते हैं जो सभी लगभग समान ऊंचाई के हैं, जैसे यह?

Rails प्रदर्शन में महारत: अपने ऐप्स का निदान और त्वरण करने का सिद्ध दृष्टिकोण

इसका अक्सर मतलब है कि आपके पास किसी प्रकार का N+1 क्वेरी है। आप कहीं includes भूल रहे हैं, या किसी API को कई बार कॉल कर रहे हैं। अगर आपने includes जोड़ा, तो आपको एक flamegraph मिलेगा जो इससे अधिक दिखता है:

Rails प्रदर्शन में महारत: अपने ऐप्स का निदान और त्वरण करने का सिद्ध दृष्टिकोण

N+1 SQL क्वेरी अधिकांश प्रदर्शन टूल्स के साथ देखना काफी आसान है: आप बस समान दिखने वाले SQL कॉल ढूंढते हैं। लेकिन गैर-SQL N+1 मुद्दे, जैसे किसी API को बहुत बार हिट करना, नोटिस करना बहुत कठिन है। खासकर अगर आपका लॉगिंग इतना अच्छा नहीं है।

Flamegraphs के साथ, हालांकि, वे समस्याएं बहुत अधिक दृश्यमान हैं।

किस पर ध्यान न दें

Flamegraphs भारी हो सकते हैं। वे आपको बहुत सारी जानकारी दिखाते हैं, और आप एक ही बार में इसे सब लेने के लिए बहुत मजबूर होते हैं। तो आप क्या अनदेखा कर सकते हैं?

आमतौर पर, आप ग्राफ की निचली और ऊपरी परतों को छोड़ सकते हैं। इसके बजाय, मैं ग्राफ के बीच के आसपास, या शायद शीर्ष तक 3/4 रास्ते से खोज शुरू करता हूं। यहीं मेरा कोड घूमता रहता है।

ग्राफ का शीर्ष आमतौर पर ActiveRecord- या IO-संबंधित होता है, और नीचे Rails फ्रेमवर्क कोड होता है, इसलिए यह समझ में आता है कि आपका कोड बीच में कहीं होगा।

क्या आपने कभी flamegraph का उपयोग किया है? वे अनुकूलित करने के लिए सर्वोत्तम स्थान खोजने का एक शानदार तरीका हैं। तो इसे आजमाएं! rack-mini-profiler और flamegraph जेम्स को अपने Gemfile में जोड़ें। आप आश्चर्यचकित होंगे कि आप अपने कोड में कितनी अधिक अंतर्दृष्टि प्राप्त करेंगे।

  1. धीमे इंटरनेट पर निर्बाध प्रदर्शन के लिए टॉप एंड्रॉइड ऐप्स धीमे इंटरनेट पर निर्बाध प्रदर्शन के लिए टॉप एंड्रॉइड ऐप्स

    ऐप स्टोर में नहीं मिला। 🙁 स्टोर पर जाएं गूगल वेबसर्च वेब ब्राउज़िंग और नेविगेशन ऐप्स जैसे महत्वपूर्ण ऐप्स के कामकाज का उन जगहों पर प्रभावित होना सामान्य है जहां कोई कनेक्टिविटी नहीं है। इसके कारण, लोगों को बहुत सारी समस्याओं का सामना करना पड़ता है। इसके विपरीत, यदि सीमित डेटा कनेक्टिविटी भी है,

  1. आपके नए पीसी के लिए 10必备 विंडोज ऐप्स आपके नए पीसी के लिए 10必备 विंडोज ऐप्स

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

  1. नए विंडोज 11 अनुभव को बेहतर बनाने के लिए शीर्ष मुफ्त ऐप्स नए विंडोज 11 अनुभव को बेहतर बनाने के लिए शीर्ष मुफ्त ऐप्स

    माइक्रोसॉफ्ट विंडोज OS का नवीनतम संस्करण आखिरकार यहां है और बहुत सारे उपयोगकर्ता पहले से ही ब्रांड नई सुविधाओं और सुधारों का अनुभव करने के लिए विंडोज 11 संस्करण 22H2 में अपग्रेड कर चुके हैं। भले ही विंडोज 11 कई नई सुविधाओं के साथ आता है जो थर्ड-पार्टी ऐप्स की आवश्यकता को कम करता है, लेकिन फिर भी, थर