.NET के लिए Google Ads की क्लाइंट लाइब्रेरी, आपके ऐप्लिकेशन को Google Ads API के साथ इंटरैक्ट करने में मदद करती है. इसके लिए, आपको कम से कम कॉन्फ़िगरेशन करना पड़ता है. हालांकि, कुल मिलाकर परफ़ॉर्मेंस इस बात पर निर्भर करती है कि लाइब्रेरी का इस्तेमाल कैसे किया जाता है और इसे आपके ऐप्लिकेशन के साथ कैसे इंटिग्रेट किया जाता है.
इस गाइड में, .NET ऐप्लिकेशन के लिए परफ़ॉर्मेंस ऑप्टिमाइज़ेशन के बारे में बताया गया है. साथ ही, इसमें Google Ads API के लिए आम तौर पर लागू होने वाले सबसे सही तरीकों के बारे में भी जानकारी दी गई है.
जब भी हो सके, GoogleAdsClient का दोबारा इस्तेमाल करना
एपीआई कॉल करते समय, GoogleAdsClient किसी उपयोगकर्ता के सेशन को दिखाता है. यह इन ऑप्टिमाइज़ेशन की सुविधा देता है:
- एपीआई सेवाओं के इस्तेमाल किए जाने वाले gRPC चैनलों को कैश करना. इससे, शुरुआती एपीआई कॉल करते समय सेटअप में लगने वाला समय कम हो जाता है.
- जब भी हो सके, ऐक्सेस टोकन का दोबारा इस्तेमाल करना. इससे, Google Ads .NET क्लाइंट लाइब्रेरी को ऐक्सेस टोकन रीफ़्रेश करने के लिए, राउंड ट्रिप की संख्या कम करनी पड़ती है.
जब भी हो सके, मैनेजर लेवल के खाते से मिले ऐक्सेस टोकन का इस्तेमाल करना
- अगर आपके पास मैनेजर लेवल के खाते से जारी किया गया ऐक्सेस टोकन है, तो इसका इस्तेमाल उस खाता क्रम-अनुक्रम के तहत आने वाले सभी Google Ads क्लाइंट खातों के लिए एपीआई कॉल करने के लिए किया जा सकता है.
GoogleAdsClientइंस्टेंस का दोबारा इस्तेमाल करने के साथ-साथ, इससे क्लाइंट लाइब्रेरी को ऐक्सेस टोकन रीफ़्रेश करने के लिए, राउंड ट्रिप की संख्या और भी कम करनी पड़ सकती है.
जब भी हो सके, Search के बजाय SearchStream का इस्तेमाल करना
पूरी रिपोर्ट डाउनलोड करने के लिए, GoogleAdsService.Search पेज के हिसाब से कई अनुरोध भेज सकता है. वहीं, GoogleAdsService.SearchStream एक ही अनुरोध भेजता है और रिपोर्ट के साइज़ के बावजूद, Google Ads API के साथ लगातार कनेक्शन शुरू करता है. आपके ऐप्लिकेशन के आधार पर, Search के जवाब के हर पेज का अनुरोध करने के लिए ज़रूरी राउंड-ट्रिप नेटवर्क का समय कम करके, SearchStream पेजिंग की तुलना में बेहतर परफ़ॉर्मेंस दे सकता है. इस ऑप्टिमाइज़ेशन के बारे में ज़्यादा जानने के लिए,
Search बनाम
SearchStream देखें.
ऐक्सेस टोकन रीफ़्रेश को मैन्युअल तरीके से मैनेज करना
कुछ एनवायरमेंट में, जैसे कि Google Cloud
Functions में, इंस्टेंस का दोबारा इस्तेमाल करना मुमकिन नहीं हो सकता
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, आपके ऐप्लिकेशन की प्रोफ़ाइल बनाने में मदद करने के लिए, डाइग्नोस्टिक टूल उपलब्ध कराता है. इसके अलावा, अन्य कमर्शियल प्रोफ़ाइलिंग टूल भी उपलब्ध हैं.
एसिंक तरीकों का इस्तेमाल करना
एसिंक-अवेइट पैराडाइम का इस्तेमाल करके, एसिंक्रोनस प्रोग्रामिंग से परफ़ॉर्मेंस से जुड़ी समस्याओं से बचा जा सकता है और आपके ऐप्लिकेशन की कुल रिस्पॉन्सिवनेस को बेहतर बनाया जा सकता है. .NET के लिए Google Ads की लाइब्रेरी, सभी सेवाओं और आरपीसी तरीकों के लिए एसिंक तरीके जनरेट करती है.
एसिंक तरीकों को रद्द करना
आप एसिंक तरीकों में callSettings पैरामीटर का इस्तेमाल करके
CancellationToken
पास कर सकते हैं:
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.CancelAfter(3000);
CallSettings callSettings = CallSettings.FromCancellationToken(cancellationTokenSource.Token);
string query = "SELECT campaign.name FROM campaign";
var request = new SearchGoogleAdsStreamRequest()
{
CustomerId = customerId.ToString(),
Query = query,
};
GoogleAdsServiceClient googleAdsService = client.GetService(
Services.V25.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
जब भी हो सके, लॉगिंग की सुविधा बंद करना
.NET के लिए Google Ads की लाइब्रेरी, डिफ़ॉल्ट रूप से लॉगिंग की सुविधा बंद रखती है. साथ ही, लेज़ी लॉगिंग के तरीके का इस्तेमाल करती है. इससे आपके ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर होती है. अगर आपने लॉगिंग की सुविधा चालू की है, तो पक्का करें कि आपने इसे प्रोडक्शन एनवायरमेंट में बंद कर दिया हो. अगर आपको प्रोडक्शन में, अनुरोधों के फ़ेल होने की खास समस्याओं की निगरानी करनी है, तो अपने ऐप्लिकेशन की परफ़ॉर्मेंस पर बुरा असर डाले बिना, इनमें से एक या ज़्यादा तरीके अपनाए जा सकते हैं:
- सिर्फ़ खास जानकारी वाले लॉग चालू करें.
- पूरे लॉग को
ERRORलेवल पर सेट करें. - दिलचस्पी के खास अनुरोधों के लिए, अनुरोध आईडी सेव करें. इसे सहायता चैनलों के साथ शेयर किया जा सकता है.
ज़्यादा जानने के लिए, लॉगिंग की गाइड देखें.
तय करना कि SearchStream या Search तरीके का इस्तेमाल करना है
Google Ads API, ऑब्जेक्ट पाने के दो मुख्य तरीके उपलब्ध कराता है: Search तरीका
(जिसमें पेजिंग का इस्तेमाल किया जाता है) और SearchStream (जिसमें स्ट्रीमिंग का इस्तेमाल किया जाता है).
SearchStream Search की तुलना में बेहतर परफ़ॉर्मेंस देता है. हालांकि, कुछ
स्थितियों में Search को प्राथमिकता दी जाती है.
इन दोनों तरीकों के बारे में ज़्यादा जानने के लिए, स्ट्रीमिंग रिपोर्ट की गाइड देखें.
ReadyToRun विकल्प का इस्तेमाल करना
.NET Core 3.1 में, अपने बाइनरी को किसी खास प्लैटफ़ॉर्म और आर्किटेक्चर के लिए पहले से कंपाइल करने की सुविधा जोड़ी गई है. इसके लिए, PublishReadyToRun सेटिंग को true पर सेट करें. इसके बाद, पब्लिश करते समय मान्य RuntimeIdentifier तय करके, बाइनरी को पब्लिश करें. ज़्यादा जानने के लिए, सुविधाReadyToRun
के बारे में
गाइड देखें.
TieredCompilation का इस्तेमाल करना
TieredCompilation की मदद से, .NET हॉटस्पॉट की पहचान कर सकता है और अपनी परफ़ॉर्मेंस को बेहतर बना सकता है. टायर्ड कंपाइलेशन, ReadyToRun विकल्प के साथ बेहतर तरीके से काम करता है, क्योंकि यह उपलब्ध होने पर पहले से जनरेट की गई इमेज का इस्तेमाल कर सकता है. ज़्यादा जानने के लिए, guide on
TieredCompilation
के बारे में देखें.
गार्बेज कलेक्शन (जीसी) को बेहतर बनाना
.NET, गार्बेज कलेक्शन (जीसी) के लिए दो सामान्य प्रोफ़ाइल उपलब्ध कराता है: वर्कस्टेशन प्रोफ़ाइल और सर्वर प्रोफ़ाइल. इन दोनों प्रोफ़ाइल में, परफ़ॉर्मेंस के अलग-अलग ट्रेडऑफ़ होते हैं. Google Ads .NET लाइब्रेरी का इस्तेमाल करने वाले ऐप्लिकेशन, सर्वर प्रोफ़ाइल में बेहतर परफ़ॉर्म करते हैं. जीसी की इन सेटिंग को बेहतर बनाकर, फ़ायदा पाया जा सकता है.
सर्वर गार्बेज कलेक्शन: सर्वर गार्बेज कलेक्शन की मदद से, .NET रनटाइम, Google Ads API ऐप्लिकेशन को कई थ्रेड पर काम करके बेहतर परफ़ॉर्मेंस दे सकता है. ज़्यादा जानकारी के लिए, यह गाइड देखें. अपने ऐप्लिकेशन की
.csprojफ़ाइल में ये लाइनें जोड़कर, सर्वर गार्बेज कलेक्शन की सुविधा चालू की जा सकती है.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>कनकरंट गार्बेज कलेक्शन: .NET जीसी को जनरेशन 2 में गार्बेज कलेक्शन के लिए एक अलग थ्रेड देने के लिए, कनकरंट गार्बेज कलेक्शन की सुविधा चालू की जा सकती है. बड़े साइज़ वाली रिपोर्ट प्रोसेस करते समय, यह सेटिंग काम की हो सकती है. अपने ऐप्लिकेशन की
.csprojफ़ाइल में ये लाइनें जोड़कर, कनकरंट गार्बेज कलेक्शन की सुविधा चालू की जा सकती है.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>वीएम गार्बेज कलेक्शन को बनाए रखना:
RetainVMGarbageCollectionसेटिंग से यह कॉन्फ़िगर किया जाता है कि वर्चुअल मेमोरी के उन सेगमेंट को स्टैंडबाय सूची में रखा जाए या नहीं जिन्हें मिटाया जाना चाहिए. इन्हें भविष्य में इस्तेमाल किया जा सकता है या ऑपरेटिंग सिस्टम (ओएस) को वापस किया जा सकता है. अपने ऐप्लिकेशन में ये लाइनें जोड़कर, वर्चुअल मेमोरी को बनाए रखने की सुविधा चालू की जा सकती है.<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
वर्कस्टेशन और सर्वर के बीच सेटअप तय करके, जीसी को बेहतर बनाया जा सकता है. सभी ज़रूरी सेटिंग
आपके .NET Core ऐप्लिकेशन की runtimeconfig.json फ़ाइल, एनवायरमेंट
वैरिएबल या .NET SDK ऐप्लिकेशन के App.config में तय की जाती हैं.