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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

המסוף

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

    כניסה ל-Cloud Run

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

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

  4. לוחצים על הכרטיסייה מאגר תגים.

    תמונה

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

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

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. במסוף Google Cloud , נכנסים לדף Services של Cloud Run:

    כניסה ל-Cloud Run

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

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

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

gcloud

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

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