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

अपने रेल ऐप्स के प्रदर्शन को समझने का एक नया तरीका

क्या आपका रेल ऐप धीमा है?

जब एक साधारण दृश्य लोड होने में कुछ सेकंड लगते हैं, तो आपको एक समस्या का पता चलता है।

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

आपको यह पता लगाने में मदद करने के लिए बहुत सारे टूल मिल सकते हैं कि आपके ऐप को धीमा क्या कर रहा है। कुछ हफ़्ते पहले, मैंने rbtrace . के बारे में बात की थी . नए अवशेष का rpm मणि ने मुझे अपने ऐप्स को गति देने में भी मदद की है।

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

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

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

अपने रेल ऐप्स के प्रदर्शन को समझने का एक नया तरीका

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

अपने रेल ऐप्स के प्रदर्शन को समझने का एक नया तरीका

मिनीप्रोफाइलर आपको लगातार याद दिलाता है कि प्रत्येक पृष्ठ को लोड होने में कितना समय लगता है। इससे आपको यह जानने में मदद मिलती है कि आपका ऐप कैसा प्रदर्शन कर रहा है। आप एक सहज ज्ञान युक्त समझ का निर्माण करेंगे कि कौन से पृष्ठ धीमे हैं और कौन से तेज़ हैं। जब कोई पेज रेंडर होने में आश्चर्यजनक रूप से लंबा समय लेता है, तो आप नोटिस करना शुरू कर देंगे। और आप इसे तुरंत ठीक करना शुरू कर सकते हैं, जबकि यह अभी भी आपके दिमाग में है।

मिनीप्रोफाइलर अधिक कर सकता है। लेकिन सबसे पहले, आपको flamegraph . इंस्टॉल करना होगा रत्न।

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

Flamegraphs:ठीक वैसे ही जैसे वे ध्वनि करते हैं

फ्लेमग्राफ इस तरह दिखता है:

अपने रेल ऐप्स के प्रदर्शन को समझने का एक नया तरीका

बहुत स्पष्ट है कि नाम कहाँ से आया है, है ना?

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

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

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

फ्लेमग्राफ में प्रत्येक "परत" स्टैक ट्रेस में एक पंक्ति होती है:

अपने रेल ऐप्स के प्रदर्शन को समझने का एक नया तरीका

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

तो, यह निश्चित रूप से अच्छा लग रहा है। लेकिन आप फ्लेमग्राफ से क्या कर सकते हैं?

फ्लेमग्राफ का उपयोग कैसे करें

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

आपका ऐप आपके विचार को प्रस्तुत करने में कितना समय व्यतीत कर रहा है? नियंत्रक कार्रवाई में? डेटाबेस मार रहा है? आंशिक प्रतिपादन?

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

अपने रेल ऐप्स के प्रदर्शन को समझने का एक नया तरीका

एक और उपयोगी चीज है जो एक फ्लेमग्राफ आपको दिखा सकता है:

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

अपने रेल ऐप्स के प्रदर्शन को समझने का एक नया तरीका

अक्सर इसका मतलब है कि आपके पास किसी प्रकार की N+1 क्वेरी है। आपके पास एक includes . नहीं है कहीं, या एक एपीआई को कॉल का एक गुच्छा बनाना। अगर आपने एक includes , आपको एक फ्लेमग्राफ मिलेगा जो इस तरह दिखता है:

अपने रेल ऐप्स के प्रदर्शन को समझने का एक नया तरीका

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

फ्लेमग्राफ के साथ, हालांकि, वे समस्याएं बहुत अधिक दिखाई देती हैं।

क्या ध्यान न दें

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

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

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

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


  1. ऐन्ड्रॉइड ऐप्स जो आपके इंटरनेट के धीमे होने पर कमाल करते हैं

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

  1. आपके नए विंडोज पीसी पर इंस्टॉल करने के लिए शीर्ष 10 ऐप्स

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

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

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