הגדרת זמן קצוב לתפוגה לבקשות לשירותים

הגדרות הזמן הקצוב לתפוגה של בקשות ב-Cloud Run מאפשרות לכם להגדיר את משך הזמן המקסימלי שבו השירות צריך להחזיר תשובה. אם השירות לא מגיב במסגרת המגבלה הזו, Cloud Run סוגר את החיבור לרשת ומחזיר שגיאת HTTP 504.

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

משך הזמן הקצוב לתפוגה של שירותים

כברירת מחדל, הזמן הקצוב לתפוגה מוגדר ל-5 דקות (300 שניות), ואפשר להאריך אותו עד ל-60 דקות (3,600 שניות).

כשמפעילים את השירות מאירועי Eventarc, ממינויי דחיפה של Pub/Sub או מ-Cloud Scheduler, חל הזמן הקצוב לתפוגה של השירותים האלה.

אפשר לשנות את ההגדרה הזו כשפורסים קובץ אימג' של קונטיינר או כשמעדכנים את הגדרת השירות.

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

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות להגדרה ולפריסה של שירותי Cloud Run, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

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

הגדרה ועדכון של זמן קצוב לתפוגה של בקשה

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

אפשר להגדיר את הזמן הקצוב לתפוגה של בקשה באמצעות מסוף Google Cloud , שורת הפקודה של ה-CLI של gcloud או קובץ YAML כשיוצרים שירות חדש או פורסים גרסה חדשה.

המסוף

  1. נכנסים ל-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Services:

    1. אם אתם מגדירים שירות חדש, לוחצים על Deploy container וממלאים את דף הגדרות השירות הראשוני. לאחר מכן לוחצים על Containers, Networking, Security כדי להרחיב את דף הגדרת השירות.

    2. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על הכרטיסייה Scaling.

  3. בקטע Requests, בשדה Request timeout, מזינים את ערך הזמן הקצוב לתפוגה שרוצים להשתמש בו, בשניות. אפשר להשתמש בערכים שנעים בין 1 ל-3600 שניות.

  4. כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על View diff & redeploy ואז על Deploy changes בשירות קיים.

gcloud

אתם יכולים לעדכן את זמן הקצוב לתפוגה של הבקשה לגרסה נתונה בכל שלב, באמצעות הפקודה הבאה:

gcloud run services update SERVICE --timeout=TIMEOUT

מחליפים את מה שכתוב בשדות הבאים:

  • ‫SERVICE: שם השירות.
  • ‫TIMEOUT: הזמן שבו צריך להחזיר תשובה, באמצעות ערך של מספר שלם או ערך משך זמן מוחלט – לדוגמה, 1m20s, שהוא דקה אחת ו-20 שניות. אם משתמשים בערך מסוג מספר שלם, המערכת מניחה שהיחידה היא שניות. הערך שאתם מציינים חייב להיות קטן מ-60 דקות.

אפשר גם להגדיר את הזמן הקצוב לתפוגה של הבקשה במהלך הפריסה באמצעות הפקודה:

gcloud run deploy --image IMAGE_URL --timeout=TIMEOUT

מחליפים את מה שכתוב בשדות הבאים:

  • ‫IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר, לדוגמה us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, המאגר REPO_NAME כבר צריך להיות קיים. הפורמט של כתובת ה-URL הוא LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • ‫TIMEOUT: הזמן שבו צריך להחזיר תשובה, באמצעות ערך של מספר שלם או ערך של משך זמן. לדוגמה, 1m20s מציין דקה אחת ו-20 שניות. אם משתמשים בערך מסוג מספר שלם, יחידת המידה תהיה שניות. הערך שאתם מציינים צריך להיות פחות מ-60 דקות.

YAML

  1. אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, הורידו את הגדרת ה-YAML שלו:

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את המאפיין timeoutSeconds:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE
          timeoutSeconds: VALUE

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SERVICE: השם של שירות Cloud Run.
    • ‫IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר, לדוגמה us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, המאגר REPO_NAME כבר צריך להיות קיים. הפורמט של כתובת ה-URL הוא LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • ‫VALUE: הזמן הקצוב לתפוגה שנבחר, בשניות.
  3. יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

    כברירת מחדל, הפקודה gcloud run services replace משתמשת בקובץ service.yaml אם הוא קיים.

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

מוסיפים את הקוד הבא למשאב google_cloud_run_v2_service בתצורה של Terraform:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-request-timeout"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    # Timeout
    timeout = "300s"
  }
}

מחליפים את 300s בזמן הקצוב לתפוגה של הבקשה שנבחרה לשירות.

הצגת ההגדרות של הזמן הקצוב לתפוגה של בקשות

כדי לראות את ההגדרות הנוכחיות של זמן הקצוב לתפוגה של בקשות בשירות Cloud Run:

המסוף

  1. נכנסים לדף Services של Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. לוחצים על השירות הרצוי כדי לפתוח את הדף Service details.

  3. לוחצים על הכרטיסייה Scaling כדי לראות את ההגדרות.

gcloud

  1. משתמשים בפקודה הבאה:

    gcloud run services describe SERVICE
  2. מאתרים את הגדרת הזמן הקצוב לתפוגה של הבקשה בהגדרות שהוחזרו.