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

הגדרות הזמן הקצוב לתפוגה של בקשות ב-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 שלCloud de Confiance , כמו ספריות הלקוח ב-Cloud, עיינו במדריך להגדרת זהות השירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.

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

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

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

המסוף

  1. נכנסים ל-Cloud Run במסוף Cloud de Confiance by S3NS :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, בוחרים באפשרות Services (שירותים) ולוחצים על Deploy container (פריסת קונטיינר) כדי להגדיר שירות חדש. אם אתם מגדירים שירות קיים, לוחצים על השירות.

  3. אם אתם מגדירים שירות חדש, ממלאים את הדף של הגדרות השירות הראשוניות ואז לוחצים על Containers, Networking, Security (מאגרי נתונים, רשתות, אבטחה) כדי להרחיב את דף הגדרת השירות.

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

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

  6. כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על 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

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

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 במסוף Cloud de Confiance by S3NS :

    כניסה ל-Cloud Run

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

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

gcloud

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

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