ביצועי אפליקציות

ספריית הלקוח של Google Ads .NET מפשטת את האינטראקציות של האפליקציה שלכם עם Google Ads API, עם כמה שפחות הגדרות משלכם. עם זאת, הביצועים הכוללים תלויים באופן השימוש בספרייה והשילוב שלה עם האפליקציה.

במדריך הזה מתוארות אופטימיזציות של ביצועים שהן ספציפיות לאפליקציות ב- .NET, והוא משלים את השיטות המומלצות שחלות באופן כללי על Google Ads API.

שימוש חוזר ב-Google AdsClient כשהדבר אפשרי

GoogleAdsClient מייצג סשן של משתמש בזמן ביצוע קריאות ל-API. הוא מספק אופטימיזציה כמו:

  • שמירה במטמון של ערוצי gRPC שבהם שירותי ה-API משתמשים. כך תוכלו לקצר את זמן ההגדרה כשמבצעים קריאות ראשוניות ל-API.
  • שימוש חוזר באסימוני גישה כשהדבר אפשרי. כך מצטמצמות מספר הנסיעות הלוך ושוב שספריית הלקוח של Google Ads .NET צריכה לבצע כדי לרענן את אסימוני הגישה.

שימוש באסימוני גישה מחשבון ברמת חשבון הניהול, כשזה אפשרי

  • אם יש לכם אסימון גישה שהונפק ברמת חשבון הניהול, תוכלו להשתמש בו כדי לבצע קריאות ל-API בכל חשבונות הלקוח ב-Google Ads שנמצאים בהיררכיית החשבונות הזו. בשילוב עם שימוש חוזר במכונות של GoogleAdsClient, זה יכול לצמצם עוד יותר את מספר הנסיעות הלוך ושוב שצריך לבצע בספריית הלקוח כדי לרענן את אסימוני הגישה.

שימוש ב-SearchStream במקום בחיפוש Google כשהדבר אפשרי

בעוד ש-GoogleAdsService.Search יכול לשלוח מספר בקשות עם עימוד להורדת הדוח כולו, GoogleAdsService.SearchStream שולח בקשה אחת ויוצר חיבור קבוע ל-Google Ads API, ללא קשר לגודל הדוח. ביטול הזמן הזה ברשת הלוך ושוב שנדרש כדי לבקש כל דף Search בנפרד, תלוי באפליקציה, וכך SearchStream יכול להציע ביצועים משופרים לעומת דפדוף. למידע נוסף על האופטימיזציה הזו, ראו חיפוש לעומת SearchStream.

ניהול ידני של הרענון של אסימון הגישה

בסביבות מסוימות, כמו Google Cloud Functionss, יכול להיות שלא יהיה אפשר לעשות שימוש חוזר במכונות 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);

הידור לגרסאות build

חשוב להקפיד להדר את האפליקציה באמצעות הגדרות להשקה במהלך הפריסה לשרת. כשמשתמשים בהגדרות של ניפוי הבאגים, האפליקציה מבצעת הידור עם מידע סימבולי מלא על תוצאות ניפוי הבאגים, ללא אופטימיזציה.

פרופיל האפליקציה

יצירת פרופיל לאפליקציה שלכם גם לצורך שימוש במעבד (CPU) וגם בזיכרון כדי לזהות צווארי בקבוק בביצועים. ב-Visual Studio יש כלי אבחון שיעזרו לכם ליצור פרופיל לאפליקציה. יש גם כלים אחרים ליצירת פרופילים מסחריים.

שימוש בשיטות אסינכרוניות

תכנות אסינכרוני באמצעות הפרדיגמה אסינכרונית-המתנה עוזר למנוע צווארי בקבוק בביצועים ולשפר את הרספונסיביות הכוללת של האפליקציה. ספריית Google Ads .NET יוצרת שיטות אסינכרוניות לכל השירותים ושיטות RPC.

מומלץ להשבית את הרישום ביומן כשהדבר אפשרי

ספריית Google Ads .NET משביתה את הרישום ביומן כברירת מחדל, ומשתמשת בגישת רישום עצלה, שמשפרת את הביצועים של האפליקציה. אם מפעילים את הרישום ביומן, חשוב להשבית אותו בסביבת הייצור. אם אתם צריכים לעקוב אחרי בקשות ספציפיות שנכשלו בסביבת הייצור, תוכלו לבצע אחד או יותר מהשלבים הבאים בלי לפגוע בביצועי האפליקציה:

  • מפעילים רק את יומני הסיכום.
  • הגדרת היומנים המלאים לרמת ERROR.
  • שומרים את מזהה הבקשה עבור בקשות עניין ספציפיות שאפשר לשתף עם ערוצי התמיכה.

למידע נוסף, אפשר לעיין במדריך לרישום ביומן.

החלטה אם להשתמש בשיטה SearchStream או בשיטה Search

ב-Google Ads API יש שתי דרכים עיקריות לאחזר אובייקטים: השיטה Search (שמשתמשת בעימוד) ו-SearchStream (שמשתמשת בסטרימינג).

הערך SearchStream מניב ביצועים טובים יותר בהשוואה ל-Search, אבל יש תרחישים שבהם Search עדיפה.

במדריך להעברת דוחות בסטרימינג ניתן למצוא מידע נוסף על שתי השיטות.

שימוש באפשרות ReadyToRun

NET Core 3.1 מוסיף תמיכה בהידור מראש של הקבצים הבינאריים לפלטפורמה ולארכיטקטורה ספציפית על ידי ציון ההגדרה PublishReadyToRun ל-true, ולאחר מכן פרסום הקובץ הבינארי על ידי ציון RuntimeIdentifier חוקי בזמן הפרסום. למידע נוסף, ראו מדריך על התכונה ReadyToRun.

שימוש ב-TtieredCompilation

באמצעות TieredCompilation אפשר להשתמש ב- .NET כדי לזהות נקודות לשיתוף אינטרנט ולשפר את הביצועים שלו. קומפילציה בשכבות עובד טוב יותר עם האפשרות ReadyToRun, כי היא יכולה להשתמש בתמונה שנוצרה מראש כשהיא זמינה. למידע נוסף, עיינו במדריך בנושא TieredCompilation.

כוונון עדין של אוסף האשפה (GC)

.NET מספק שני פרופילים כלליים לאיסוף אשפה (GC): פרופיל תחנת עבודה ופרופיל שרת. לשני הפרופילים האלה יש הבדלי ביצועים. אפליקציות שמשתמשות בספריית Google Ads .NET נוטות להניב ביצועים טובים יותר כאשר הן פועלות בפרופיל שרת. כדי להפיק תועלת מכוונון עדין של ההגדרות הבאות של GC.

  • איסוף אשפה על השרת: איסוף אשפה של השרת מאפשר זמן ריצה של .NET כדי לשפר את הביצועים של אפליקציית Google Ads API באמצעות פעולה בכמה שרשורים. למידע נוסף, קראו את המדריך הזה. כדי להפעיל את איסוף האשפה בשרת, צריך להוסיף את השורות הבאות לקובץ .csproj של האפליקציה.

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • concurrent איסוף אשפה: אפשר להפעיל את האפשרות concurrent collection (איסוף אשפה בו-זמנית) כדי לתת ל-NET GC thread ייעודי לאיסוף אשפה מדור 2. ההגדרה הזו יכולה להיות שימושית כשמעבדים דוחות עם גדלים גדולים. אפשר להפעיל איסוף אשפה בו-זמנית על ידי הוספת השורות הבאות לקובץ .csproj של האפליקציה.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • שמירת איסוף האשפה ב-VM: ההגדרה RetainVMGarbageCollection קובעת אם קטעים מהזיכרון הווירטואלי שצריך למחוק יועברו לרשימת המתנה לשימוש עתידי, או ישוחררו חזרה למערכת ההפעלה (OS). כדי להפעיל את שמירת הזיכרון הווירטואלי, צריך להוסיף את השורות הבאות לאפליקציה.

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

כדי לבצע כוונון עדין של ה-GC, אפשר לעבור בין תחנת עבודה לשרת. כל ההגדרות הרלוונטיות מפורטות בקובץ runtimeconfig.json של אפליקציית ה- .NET Core, במשתנה סביבה או ב-App.config של אפליקציית ה-SDK של .NET.