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