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

साइडकीक अनुकूलन और निगरानी

हमें अक्सर Sidekiq के अनुकूलन या निगरानी के बारे में प्रश्न मिलते हैं। निगरानी हमारे खेल की तरह है, लेकिन साइडकीक के प्रदर्शन को अनुकूलित करना एक अलग गेंद का खेल है। वास्तव में, अनुकूलन करना जटिल है, लेकिन आइए प्रतीत होने वाले सरल उत्तरों को देखकर शुरू करते हैं...

गति बढ़ाने के दो तरीके

शुरू करने के लिए, गति को दो तरीकों से बढ़ाया जा सकता है - बड़े काम करके (जो अधिक मेमोरी या आईओ या अधिक जटिल हो सकता है), या समवर्ती सेटिंग्स या श्रमिकों को समायोजित करके (जो अधिक सीपीयू और संभवतः आईओ का उपयोग करेगा)। आउच, वास्तविकता पहले से ही किक मार रही है:गति एक कीमत पर आती है। यदि आप अतिरिक्त मेमोरी, आईओ या सीपीयू को छोड़ सकते हैं तो यह मुफ़्त है, लेकिन हमें लगता है कि ट्रेड-ऑफ को महसूस करना महत्वपूर्ण है जिसे बनाने की आवश्यकता हो सकती है।

Concurrency सेटिंग्स के माध्यम से गति बढ़ाना

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

<ब्लॉककोट>

ध्यान दें कि नए समवर्ती मॉडल को आपके ऐप द्वारा समर्थित होना चाहिए। उदाहरण के लिए, इसे डेटाबेस से कनेक्शन के एक बड़े पूल की आवश्यकता होती है और आपके होस्ट को I/O संचालन में वृद्धि को संभालने में सक्षम होना चाहिए। अधिक जानकारी के लिए आप समवर्ती पर साइडकीक दस्तावेज़ देख सकते हैं।

कई श्रमिकों को चलाकर गति बढ़ाना

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

क्या यह काम करता है या टूटता है? क्या मॉनिटर करें और हमारे मैजिक डैशबोर्ड

डिफ़ॉल्ट पैरामीटर बदलने से आपके एप्लिकेशन के प्रदर्शन पर असर पड़ सकता है। सेटिंग्स बदलने से पहले, यह देखने के लिए निगरानी स्थापित करने की अनुशंसा की जाती है कि क्या परिवर्तन सकारात्मक प्रभाव डालते हैं या यदि वे प्रदर्शन को कम करते हैं।

आइए यह जांच कर शुरू करें कि क्या हम मेजबान स्तर पर चीजों को तोड़ रहे हैं। आप यह देखना चाहेंगे कि आपके द्वारा चलाए जा रहे हार्डवेयर पर आपका ऐप कितना संसाधन गहन है। यदि आपके पास मेमोरी और सीपीयू में क्षमता शेष है, तो आप चीजों को थोड़ा तेज करने के लिए समवर्ती सेटिंग्स बढ़ा सकते हैं।

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

अब, देखते हैं कि क्या साइडकीक स्तर पर चीजें नहीं टूट रही हैं। आपकी पसंद का एपीएम शायद आपको किसी मैन्युअल तरीके से अपनी पृष्ठभूमि की नौकरियों के लिए निगरानी और अलर्ट सेट करने की अनुमति देगा। AppSignal पर, यह बहुत आसान है:हम इसे आपके लिए Sidekiq मैजिक डैशबोर्ड में ट्रैक करते हैं (जो आपके द्वारा हमारे रत्न का नवीनतम संस्करण चलाने पर आपकी ओर से बिना किसी सेटअप के जेनरेट हो जाता है)।

इस सेटअप में, आप नौकरी की स्थिति की निगरानी करना चाहेंगे प्रति कतार और स्लैक, पेजरड्यूटी, ईमेल या जो कुछ भी आप उपयोग करते हैं, उस पर विफलता दर को सतर्क करने के लिए एक ट्रिगर सेट करें।

कम, बड़ी नौकरियां?

हमने सीपीयू को बंद करते हुए गति बढ़ाने पर एक त्वरित नज़र डाली है। अब, स्मृति या आईओ, या अधिक जटिलता पर व्यापार करते समय बढ़ती गति को देखें। आपको लगता होगा कि आप बड़े रोजगार सृजित करके ऐसा कर सकते हैं। विचार यह होगा कि बड़ी नौकरियां तेजी से हो सकती हैं क्योंकि उनके पास प्रति ऑपरेशन साइडकीक ओवरहेड नहीं है। हालांकि हमारे अनुभव में, साइडकीक ओवरहेड शायद ही कभी आपके प्रदर्शन को प्रभावित करेगा। अक्सर, यह डेटाबेस क्वेरी है जो कार्य करता है जो प्रदर्शन को मार सकता है। हम देखते हैं कि कम क्वेरी करने के लिए अधिक नौकरियों का संयोजन है बेहतर प्रदर्शन का एक महत्वपूर्ण तरीका। सरलीकृत:1 रिकॉर्ड के 1000 अपडेट के बजाय 1000 रिकॉर्ड का एक अपडेट करना।

यह देखने के लिए क्या मॉनिटर करना है कि यह काम करता है या टूटता है?

सबसे पहले, आप नौकरी की स्थिति की निगरानी करना चाहेंगे प्रति कतार यहां भी और विफलता दर . के लिए एक ट्रिगर सेट करें . चूंकि नौकरियों में अधिक समय लगता है और उनके संचालन अधिक होते हैं, इसलिए आपको Sidekiq के मेमोरी उपयोग की निगरानी भी करनी होगी। . आपको Sidekiq मेमोरी उपयोग . पर एक अलर्ट भी सेट करना चाहिए , लेकिन विशेष रूप से, एक मेमोरी से बाहर हो रहे होस्ट . के लिए AppSignal की विसंगति का पता लगाने का उपयोग करना।

आपको कतार की लंबाई की निगरानी भी करनी चाहिए प्रति कतार। जब कोई बैकलॉग बन रहा हो तो यह आपको सचेत करेगा - जब श्रमिकों के पास उनके द्वारा संसाधित की जाने वाली कतार से अधिक कतार होगी। हम आपको सलाह देते हैं कि आप अपनी 'महत्वपूर्ण' कार्य कतार के लिए एक विसंगति का पता लगाने वाला ट्रिगर सेट अप करें।

ऐसा ट्रेड-ऑफ़ जो आप अपने एपीएम में नहीं देखेंगे

बड़ी नौकरियों के साथ बड़ी समस्या यह है कि उन्हें कोड करना कठिन होता है। आपको अलग-अलग नौकरियों को स्पष्ट रूप से बेकार बनाना होगा और उनकी स्थिति पर नज़र रखनी होगी। एक साधारण उदाहरण में:जब आपके पास कोई ऐसा काम है जो एक व्यक्ति को मेल करता है और वह विफल हो जाता है, तो आप उसे बिना किसी नुकसान के पुनः प्रयास कर सकते हैं। 1000 लोगों को मेल करते समय, यदि कार्य विफल हो जाता है, तो आप नौकरी के विफल होने से पहले आपके द्वारा मेल किए गए 240 लोगों को फिर से नहीं भेजना चाहते हैं। यह सुनिश्चित करना कि ऐसा न हो, कोड को और अधिक जटिल बना देता है।

वास्तविकता की वास्तविक जटिलता

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

क्योंकि एक समस्या एक जगह देखी जा सकती है लेकिन पूरी तरह से कहीं और हो सकती है, ऐपसिग्नल पर, हमने उत्पाद बनाया है, इसलिए इसमें त्रुटियां, प्रदर्शन और होस्ट मेट्रिक्स ऑल-इन-वन हैं। इस दृश्य के संयुक्त मीट्रिक से समस्या के मूल कारण का पता लगाना आसान हो जाएगा।

कोई आसान उत्तर नहीं हैं, क्या यह हैं?

हालाँकि हमने इस लेख को साइडकीक की निगरानी और अनुकूलन की मूल बातें के साथ शुरू किया था, हम तुरंत इस वास्तविकता में भाग गए कि गति सीपीयू और आईओ को खर्च करेगी। या स्मृति। या अधिक जटिलता का परिचय दें। और यद्यपि हमने आपके आर्किटेक्चर में प्रदर्शन की कुछ जटिलताओं को छुआ है, वास्तविकता यह है कि हमने इस पोस्ट में लगभग 99% कठिन चीजों को छोड़ दिया है।

इसलिए, भले ही हमने सरल उत्तरों के लिए आपकी आशाओं को छीन लिया हो, हम आशा करते हैं कि इस लेख ने आपके साइडकीक सेटअप को अनुकूलित करने और उसकी निगरानी करने के बारे में कुछ दिलचस्प विचारों को उकसाया है!


  1. सफाई से स्केलिंग साइडकीक

    इस वर्ष की शुरुआत में हमने एक समर्पित सर्वर होस्टिंग सुविधा से AWS में माइग्रेट किया, और हमें बहुत खुशी है कि हमने ऐसा किया। हम ऑटोमेशन का एक गुच्छा पाकर खुश हैं, क्योंकि हमें सर्वर के साथ कम समय बिताने का मौका मिलता है। :) यह पोस्ट बताती है कि हमारे बुनियादी ढांचे में क्या होता है जब हमारे पास प्रस

  1. अपने iPhone पर RAM, CPU और बैटरी के उपयोग की निगरानी करना

    यदि आपके पास कुछ समय के लिए अपना आईफोन है और आप देखते हैं कि इसका प्रदर्शन सामान्य से धीमा है, तो आपके पास लगातार नई वस्तुओं के लिए जगह की कमी है, या बैटरी कुछ घंटों से अधिक नहीं चलती है, आपको तीन के उपयोग की निगरानी करने की आवश्यकता है प्रमुख घटक। अपने iPhone के RAM, CPU और बैटरी उपयोग की जाँच करन

  1. Android उपकरणों की मैन्युअल सफाई और अनुकूलन से उत्पन्न जोखिम

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