בדף הזה מוסבר איך לבטל את הגדרת הזמן הקצוב לתפוגה שמוגדרת כברירת מחדל ולהגדיר מדיניות ניסיון חוזר באמצעות ספריות הלקוח של Spanner.
ספריות הלקוח משתמשות בהגדרות ברירת מחדל של מדיניות ניסיון חוזר וזמן קצוב לתפוגה, שמוגדרות בקובצי ההגדרות הבאים.
- spanner_grpc_service_config.json
- spanner_admin_instance_grpc_service_config.json
- spanner_admin_database_grpc_service_config.json
בקובצי ההגדרות, ברירת המחדל של הזמן הקצוב לתפוגה של פעולות שנמשכות זמן קצר, כמו CreateSession, היא 30 שניות. לפעולות ארוכות יותר, כמו שאילתות או קריאות, יש פסק זמן שמוגדר כברירת מחדל של 3,600 שניות. מומלץ להשתמש בערכי ברירת המחדל האלה. עם זאת, אם צריך, אפשר להגדיר מדיניות מותאמת אישית של זמן קצוב לתפוגה או של ניסיון חוזר באפליקציה.
אם מחליטים לשנות את הזמן הקצוב לתפוגה, צריך להגדיר אותו לפרק הזמן בפועל שהאפליקציה מוגדרת להמתין לתוצאה.
אל תגדירו מדיניות ניסיון חוזר שהיא אגרסיבית יותר מברירת המחדל, כי יותר מדי ניסיונות חוזרים עלולים להעמיס על הקצה העורפי ולגרום להגבלת הבקשות.
מדיניות ניסיון חוזר מוגדרת בכל קטע קוד, עם המאפיינים הבאים:
- משך זמן ההמתנה הראשוני לפני ניסיון חוזר לשליחת הבקשה.
- עיכוב מקסימלי.
- מקדם להכפלה של זמן ההמתנה הקודם כדי לחשב את זמן ההמתנה הבא, עד שמגיעים לערך המקסימלי.
- קבוצה של קודי שגיאה לניסיונות חוזרים.
בדוגמה הבאה, מוגדר זמן קצוב לתפוגה של 60 שניות לפעולה הנתונה.
אם הפעולה נמשכת יותר מהזמן הקצוב לתפוגה הזה, היא נכשלת ומוחזרת השגיאה DEADLINE_EXCEEDED.
אם הפעולה נכשלת עם קוד השגיאה UNAVAILABLE, למשל אם יש בעיה זמנית ברשת, המערכת מנסה לבצע את הפעולה שוב. הלקוח ממתין 500 אלפיות השנייה לפני שהוא מתחיל את הניסיון הראשון לשליחה חוזרת. אם הניסיון הראשון חוזר עם שגיאה, הלקוח ממתין 1.5 * 500 אלפיות השנייה = 750 אלפיות השנייה לפני שהוא מתחיל את הניסיון השני. ההשהיה הזו בין הניסיונות ממשיכה לגדול עד שהפעולה מצליחה או עד שהיא מגיעה להשהיה המקסימלית של 16 שניות. הפעולה נכשלת עם שגיאה DEADLINE_EXCEEDED אם הזמן הכולל שמוקדש לניסיון לבצע את הפעולה חורג מערך הזמן הקצוב לתפוגה הכולל של 60 שניות.