שיטות מומלצות ומגבלות

כדאי להביא בחשבון את ההנחיות הבאות כשמשתמשים BatchJobService

שיפור התפוקה

  • עדיף שיהיו פחות משרות גדולות על פני הרבה משרות קטנות יותר.

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

  • במסגרת פעולות מאותו סוג, אפשר לשפר את הביצועים על ידי קיבוץ לפי משאב הורה. לדוגמה, אם יש לכם סדרה של AdGroupCriterionOperation אובייקטים, אפשר לקבץ בצורה יעילה יותר פעולות לפי קבוצת מודעות, במקום פעולות שילוב שמשפיעות על המודעה קריטריונים לקבוצות שונות של מודעות.

מניעת בעיות בו-זמניות (concurrency)

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

  • אסור לשלוח כמה פעולות שמשנות את אותו אובייקט באותו אובייקט כי הוא עלול להיות בלתי צפוי.

אחזור תוצאות באופן אופטימלי

  • אסור לדגום את סטטוס המשרה בתדירות גבוהה מדי, אחרת אתם עלולים להגיע למגבלת הקצב של יצירת הבקשות שגיאות.

  • אל תאחזרו יותר מ-1,000 תוצאות בדף. השרת יכול לחזור פחות מכך עקב עומס או גורמים אחרים.

  • סדר התוצאות יהיה זהה לסדר ההעלאה.

הנחיות נוספות לשימוש

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

  • מומלץ להוסיף עד 1,000 פעולות לכל AddBatchJobOperationsRequest ולהשתמש ב sequence_token כדי להעלות את שאר הפעולות לאותה המשימה. בהתאם לתרחיש לדוגמה יותר מדי פעולות באותה פעולה, AddBatchJobOperationsRequest עלול לגרום לשגיאה REQUEST_TOO_LARGE. שלך יכול לטפל בשגיאה הזו על ידי צמצום מספר הפעולות וניסיונות חוזרים AddBatchJobOperationsRequest

מגבלות

  • כל BatchJob תומך במיליון לכל היותר. ב-AI.

  • כל חשבון יכול לכלול עד 100 משימות פעילות או ממתינות בו-זמנית.

  • משימות בהמתנה מלפני יותר מ-7 ימים יוסרו באופן אוטומטי.

  • כל AddBatchJobOperationsRequest הגודל המקסימלי הוא 10,484,504 בייטים. אם תחרגו מהמכסה, תקבלו INTERNAL_ERROR. אפשר לקבוע את גודל הבקשה לפני שליחה ולנקוט פעולה מתאימה אם הוא גדול מדי.

    Java

    
    static final int MAX_REQUEST_BYTES = 10_484_504;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.getSerializedSize();
    

    Python

    
    from google.ads.googleads.client import GoogleAdsClient
    
    MAX_REQUEST_BYTES = 10484504
    
    ... (code to get the request object)
    
    size_in_bytes = request._pb.ByteSize()
    

    Ruby

    
    require 'google/ads/google_ads'
    
    MAX_REQUEST_BYTES = 10484504
    
    ... (code to get the request object)
    
    size_in_bytes = request.to_proto.bytesize
    

    PHP

    
    use Google\Ads\GoogleAds\V16\Resources\Campaign;
    
    const MAX_REQUEST_BYTES = 10484504;
    
    ... (code to get the request object)
    
    $size_in_bytes = $campaign->byteSize() . PHP_EOL;
    

    ‎.NET

    
    using Google.Protobuf;
    const int MAX_REQUEST_BYTES = 10484504;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.ToByteArray().Length;
    

    Perl

    
    use Devel::Size qw(total_size);
    use constant MAX_REQUEST_BYTES => 10484504;
    
    ... (code to get the request object)
    
    my $size_in_bytes = total_size($request);