פתרון בעיות שקשורות למכסת הפעולות המקבילות ב-Compute Engine

במאמר הזה נסביר איך לפתור בעיות שקשורות למגבלות על פעולות בו-זמניות ב-Compute Engine שנגרמות בגלל שגיאות rateLimitExceeded.

כדי לזהות את הגורם לשגיאה rateLimitExceeded, אפשר לפעול לפי השלבים הבאים לפתרון בעיות:

  1. במסוף Google Cloud , נכנסים לדף Logs Explorer:

    כניסה אל Logs Explorer

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.

  2. כדי לסנן את יומני השגיאות שנוצרו על ידי Compute Engine API, מזינים את שאילתת הרישום הבאה בעורך השאילתות.

    log_id("cloudaudit.googleapis.com/activity")
    protoPayload.serviceName="compute.googleapis.com"
    protoPayload.response.error.code=403
    protoPayload.status.message="Rate Limit Exceeded"
    

    יומני השגיאות המסוננים אמורים להיראות כך:

    "protoPayload":{
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "message": "Rate Limit Exceeded"
    }
    "serviceName": "compute.googleapis.com",
    "methodName": "METHOD_NAME",
    ...
    ...
    "response": {
      "error": {
        "message": "Rate Limit Exceeded",
        "code": 403,
        "errors": [
          {
            "message": "Rate Limit Exceeded",
            "reason": "rateLimitExceeded",
            "domain": "usageLimits"
          }
        ]
      },
      "@type": "type.googleapis.com/error"
    },
    "resourceLocation": {
      "currentLocations": [
        "LOCATION"
      ]
    },
    ...
    ... 

    פרטי השגיאה מכילים את הערכים הבאים:

    • METHOD_NAME: השם של שיטת השירות או הפעולה. בקריאות ל-API, השם הזה צריך להיות שם ה-method של ה-API.

    • LOCATION: המיקום של המשאב. ההגדרה יכולה להיות אזורית, גלובלית או לפי אזור זמינות. לדוגמה, הערכים currentLocations: "us-central1"(Regional) או currentLocations: "us-central1-a" מציינים שהאזור הוא "us-central1" או currentLocations: "global".

  3. מזהים את הערך המשויך methodName מיומן השגיאות. השם הזה מייצג את ה-method של ה-API שחורגת מהגבלת הקצב, לדוגמה: v1.compute.instances.stop.

  4. מזהים את המיקום הרלוונטי ביומני הביקורת.

  5. בודקים את Concurrent operations per project המכסות והמגבלות.

    המסוף

    1. נכנסים לדף Quotas במסוף Google Cloud .

      לפתיחת הדף Quotas

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

    2. כדי לסנן את הרשימה ולראות את השימוש ואת המגבלה של מכסה ספציפית, בוחרים באפשרות Quota או Metric בשדה Filter.

      לדוגמה, אפשר לבחור את המכסה לפי השם Concurrent global operations per project operation type או לבחור את Service: Compute Engine API, type: System Limit ומילת מפתח concurrent כדי לראות רשימה של כל מכסות הפעולות המקבילות. הסינון מספק רשימה של מכסות מקבילות. אפשר לחפש ברשימה הזו את המכסה שהושפעה. כדי לסנן את המכסה לפעולה ספציפית, מוסיפים Dimensions לשאילתת הסינון ובוחרים את operation_type (מוצג כ-methodName ביומני הביקורת).

      לדוגמה, בוחרים באפשרות instances_stop כדי לראות את השימוש במכסה ואת המגבלה של הפעולה instances.stop.

      כדי לסנן את המכסה לאזור ספציפי, מוסיפים Dimensions לשאילתת הסינון ובוחרים את region (מוצג כ-currentLocations ביומני הביקורת).

      לדוגמה, בוחרים באפשרות us-central1 כדי לראות את השימוש במכסה ואת המגבלה של אזור us-central1.

      אפשר להשתמש במסננים region ו-operation_type יחד כדי לראות את השימוש במכסה ואת המגבלה של פעולה ספציפית באזור ספציפי.

    gcloud

    אפשר להשתמש ב-Google Cloud CLI כדי לראות את השימוש במכסות של פעולות מקבילות ואת המגבלות שלהן.

    כדי לעשות את זה, צריך לוודא שהתקנתם את הרכיב פקודות אלפא. אם אתם משתמשים ב-Cloud Shell לאינטראקציה עם Google Cloud, כבר מותקן אצלכם Google Cloud CLI.

    כדי לראות את מכסת הפעולות, משתמשים בפקודה הבאה:

    gcloud alpha services quota list \
      --service=compute.googleapis.com \
      --consumer=projects/PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה הפרויקט שאת המכסה שלו רוצים לראות.

    המיכסות האלה מחולקות בדרך כלל לשתי קטגוריות:

    • גלובלי או אזורי
    • לכל פרויקט או לכל פרויקט לכל סוג פעולה

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

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

    כדי לראות תרשימים שמציגים את השימוש הנוכחי ואת השימוש בשיא, עוברים למכסה ולוחצים על Monitoring. יכול להיות שתצטרכו לגלול שמאלה עד סוף הטבלה.

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

    הנה כמה מהשיטות המומלצות: