ऐप्लिकेशन की परफ़ॉर्मेंस

Google Ads .NET क्लाइंट लाइब्रेरी की मदद से, Google Ads API के साथ आपके ऐप्लिकेशन के इंटरैक्शन को आसान बनाया जा सकता है. इसमें आपको कम से कम कॉन्फ़िगरेशन करना पड़ता है. हालांकि, कुल परफ़ॉर्मेंस इस बात पर निर्भर करती है कि लाइब्रेरी को कैसे इस्तेमाल किया जाता है और उसे आपके ऐप्लिकेशन के साथ कैसे इंटिग्रेट किया जाता है.

इस गाइड में खास तौर पर .NET ऐप्लिकेशन के लिए परफ़ॉर्मेंस ऑप्टिमाइज़ेशन के बारे में जानकारी दी गई है. साथ ही, Google Ads API पर आम तौर पर लागू होने वाले सबसे सही तरीकों को भी बेहतर बनाया गया है.

जब भी हो सके Google AdsClient का फिर से इस्तेमाल करें

GoogleAdsClient, एपीआई कॉल करते समय उपयोगकर्ता के सेशन को दिखाता है. इससे कई ऑप्टिमाइज़ेशन करने में मदद मिलती है, जैसे:

  • एपीआई सेवाओं में इस्तेमाल किए जाने वाले gRPC चैनलों को कैश मेमोरी में सेव करना. इससे शुरुआती एपीआई कॉल करते समय, सेटअप में लगने वाला समय कम हो जाता है.
  • जब हो सके, तब ऐक्सेस टोकन का फिर से इस्तेमाल करना. इससे, Google Ads .NET क्लाइंट लाइब्रेरी को ऐक्सेस टोकन रीफ़्रेश करने के लिए, राउंड ट्रिप की संख्या कम हो जाती है.

जब भी हो सके, मैनेजर लेवल वाले खाते से मिले ऐक्सेस टोकन का इस्तेमाल करें

  • अगर आपके पास मैनेजर खाता लेवल पर जारी किया गया ऐक्सेस टोकन है, तो उसका इस्तेमाल उस खाते की हैरारकी के तहत आने वाले सभी Google Ads क्लाइंट खातों के लिए एपीआई कॉल करने के लिए किया जा सकता है. GoogleAdsClient इंस्टेंस का फिर से इस्तेमाल करने के साथ जोड़ने पर, इससे क्लाइंट लाइब्रेरी को की जाने वाली राउंड ट्रिप की संख्या कम हो सकती है, ताकि ऐक्सेस टोकन रीफ़्रेश किए जा सकें.

जब भी हो सके, Search की जगह SearchStream का इस्तेमाल करें

GoogleAdsService.Search, पूरी रिपोर्ट डाउनलोड करने के लिए, पेजों में नंबर एक साथ डालने के कई अनुरोध भेज सकता है. GoogleAdsService.SearchStream यह एक ही अनुरोध भेजता है और Google Ads API के साथ स्थायी कनेक्शन बनाता है, चाहे रिपोर्ट का साइज़ कुछ भी हो. Search रिस्पॉन्स के हर पेज का अनुरोध करने के लिए, दोतरफ़ा यात्रा का नेटवर्क समय खत्म करने पर, SearchStream पेजिंग की तुलना में बेहतर परफ़ॉर्मेंस दे सकता है. यह आपके ऐप्लिकेशन पर निर्भर करता है. इस ऑप्टिमाइज़ेशन के बारे में ज़्यादा जानने के लिए, Search बनाम SearchStream देखें.

ऐक्सेस टोकन के रीफ़्रेश होने की सुविधा को मैन्युअल तरीके से मैनेज करें

Google Cloud फ़ंक्शन जैसे कुछ एनवायरमेंट में, हो सकता है कि GoogleAdsClient इंस्टेंस का फिर से इस्तेमाल न किया जा सके. डेटा को बनाए रखने और उसका फिर से इस्तेमाल करने के लिए, इस तरह के एनवायरमेंट अपने सबसे सही तरीके अपना सकते हैं. ऐसे मामलों में, अपने ऐक्सेस टोकन को रीफ़्रेश करने के लिए, GoogleAdsConfig क्लास को इस तरह बढ़ाया जा सकता है.

// Create your own config class by extending the GoogleAdsConfig class.

class MyGoogleAdsConfig : GoogleAdsConfig
{
    public MyGoogleAdsConfig() : base()
    {
        // Disable the library's in-built channel caching mechanism.
        this.UseChannelCache = false;
    }
    protected override ICredential CreateCredentials()
    {
        // TODO: Create your own ICredentials object here. You may refer to the
        // default implementation of GoogleAdsConfig::CreateCreateCredentials
        // for an example.
    }
}

// Use your own config class when initializing the GoogleAdsClient instance.

MyGoogleAdsConfig myconfig = new MyGoogleAdsConfig();
GoogleAdsClient client = new GoogleAdsClient(myconfig);

रिलीज़ बिल्ड के लिए कंपाइल करें

पक्का करें कि सर्वर पर डिप्लॉय करते समय, आपने रिलीज़ कॉन्फ़िगरेशन का इस्तेमाल करके ऐप्लिकेशन को कंपाइल किया हो. डीबग कॉन्फ़िगरेशन का इस्तेमाल करते समय, आपका ऐप्लिकेशन डीबग की पूरी जानकारी के साथ, बिना ऑप्टिमाइज़ेशन के इकट्ठा करता है.

अपने ऐप्लिकेशन की प्रोफ़ाइल बनाएं

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

एक साथ काम नहीं करने वाली प्रोसेस का इस्तेमाल करना

async-await paradigm का इस्तेमाल करके, एसिंक्रोनस प्रोग्रामिंग से, परफ़ॉर्मेंस में होने वाली रुकावटों से बचने और आपके ऐप्लिकेशन की जवाबदेही बढ़ाने में मदद मिलती है. Google Ads .NET लाइब्रेरी सभी सेवाओं और RPC के तरीकों के लिए एक साथ काम नहीं करने वाली प्रोसेस जनरेट करती है.

जब हो सके, तब लॉग इन करने की सुविधा बंद करें

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

  • सिर्फ़ खास जानकारी वाले लॉग चालू करें.
  • पूरे लॉग को ERROR लेवल पर सेट करें.
  • रुचि के खास अनुरोधों के लिए अनुरोध आईडी सेव करें, जिन्हें आप सहायता चैनलों के साथ शेयर कर सकें.

ज़्यादा जानने के लिए, लॉगिंग गाइड देखें.

तय करें कि SearchStream या Search में से किस तरीके का इस्तेमाल करना है

Google Ads API में दो तरीके से ऑब्जेक्ट वापस लिए जा सकते हैं: Search तरीका (जिसमें पेज पर नंबर डालने की प्रक्रिया का इस्तेमाल किया जाता है) और SearchStream (जिसमें स्ट्रीमिंग का इस्तेमाल किया जाता है).

Search की तुलना में, SearchStream की परफ़ॉर्मेंस बेहतर होती है. हालांकि, कुछ ऐसे मामलों में भी Search को प्राथमिकता दी जाती है.

दोनों तरीकों के बारे में ज़्यादा जानने के लिए, स्ट्रीमिंग रिपोर्ट से जुड़ी गाइड देखें.

ReadyToRun विकल्प का इस्तेमाल करें

.NET Core 3.1, आपकी बाइनरी को किसी खास प्लैटफ़ॉर्म और आर्किटेक्चर पर पहले से कंपाइल करने की सुविधा देता है. इसके लिए, true पर PublishReadyToRun सेटिंग तय की जाती है. इसके बाद, पब्लिश करते समय, एक मान्य RuntimeIdentifier तय करके बाइनरी को पब्लिश करने की सुविधा मिलती है. ज़्यादा जानने के लिए, ReadyToRun की सुविधा की गाइड देखें.

TieredCompilation का इस्तेमाल करें

TieredCompilation, .NET को हॉटस्पॉट की पहचान करने और उसकी परफ़ॉर्मेंस को बेहतर बनाने की अनुमति देता है. अलग-अलग टीयर वाले कंपाइलेशन, ReadyToRun विकल्प के साथ बेहतर काम करते हैं, क्योंकि उपलब्ध होने पर, पहले से जनरेट की गई इमेज का इस्तेमाल किया जा सकता है. ज़्यादा जानने के लिए, TieredCompilation से जुड़ी गाइड देखें.

कूड़ा संग्रह (जीसी) को बेहतर बनाना

.NET से कचरा इकट्ठा करने (जीसी) की दो सामान्य प्रोफ़ाइल मिलती हैं: वर्कस्टेशन प्रोफ़ाइल और सर्वर प्रोफ़ाइल. इन दोनों प्रोफ़ाइलों की परफ़ॉर्मेंस पर असर अलग-अलग हो सकता है. Google Ads .NET लाइब्रेरी का इस्तेमाल करने वाले ऐप्लिकेशन, सर्वर प्रोफ़ाइल का इस्तेमाल करने पर बेहतर परफ़ॉर्म करते हैं. नीचे दी गई जीसी सेटिंग को बेहतर बनाने से आपको फ़ायदा मिल सकता है.

  • सर्वर से ट्रैश कलेक्शन: सर्वर से कूड़ा इकट्ठा करने की सुविधा, .NET रनटाइम को कई थ्रेड पर ऑपरेट करके, Google Ads API ऐप्लिकेशन को बेहतर परफ़ॉर्मेंस देने की अनुमति देती है. ज़्यादा जानकारी के लिए, यह गाइड देखें. आप अपने ऐप्लिकेशन की .csproj फ़ाइल में नीचे दी गई लाइनें जोड़कर, सर्वर का कचरा इकट्ठा करने की सुविधा चालू कर सकते हैं.

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • एक ही समय पर कचरा इकट्ठा करने की सुविधा: दूसरी पीढ़ी में, .NET GC से कचरा इकट्ठा करने के लिए खास तौर पर बनाया गया थ्रेड देने के लिए, एक साथ कचरा इकट्ठा करने की सुविधा चालू की जा सकती है. बड़े साइज़ वाली रिपोर्ट प्रोसेस करते समय, यह सेटिंग मददगार हो सकती है. आपके पास अपने ऐप्लिकेशन की .csproj फ़ाइल में इन लाइनों को जोड़कर, एक साथ कचरा इकट्ठा करने की सुविधा चालू करने का विकल्प है.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • VM के ट्रैश को इकट्ठा करना बनाए रखें: RetainVMGarbageCollection सेटिंग यह कॉन्फ़िगर करती है कि वर्चुअल मेमोरी के जिन सेगमेंट को मिटाया जाना चाहिए उन्हें आने वाले समय के लिए स्टैंडबाय सूची में रखा जाए या ऑपरेटिंग सिस्टम (ओएस) में रिलीज़ कर दिया जाए. अपने ऐप्लिकेशन में नीचे दी गई लाइनें जोड़कर, वर्चुअल मेमोरी रिटेंशन की सुविधा चालू की जा सकती है.

    <PropertyGroup>
      <RetainVMGarbageCollection>true</RetainVMGarbageCollection>
    </PropertyGroup>
    

वर्कस्टेशन और सर्वर के बीच के सेटअप को मैनेज करके, अपने जीसी को बेहतर बनाया जा सकता है. काम की सभी सेटिंग, आपके .NET Core ऐप्लिकेशन की runtimeconfig.json फ़ाइल, एनवायरमेंट वैरिएबल या .NET SDK ऐप्लिकेशन के App.config में दी जाती हैं.