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