יש כמה מצבים שבהם אוסף הפרופילים לא יפעל כמו שציפיתם:
- איסוף הפרופיל נכשל בגלל שגיאה פנימית. במקרה כזה, ה-API
ProfilingResult
ידווח לכם על השגיאות. - איסוף הפרופיל נכשל בגלל הגבלת קצב. מידע נוסף זמין במאמר בנושא איך פועלת הגבלת קצב
- איסוף הפרופיל מצליח, אבל האפליקציה לא מקבלת התראה באופן מיידי.
מצב כזה יכול לקרות אם האפליקציה קורסת במהלך איסוף נתונים ארוך של פרופילים. אם האפליקציה נסגרת, המערכת מפסיקה את הפרופיל ושומרת אותו באופן אוטומטי. האפליקציה מקבלת מידע על הפרופיל שנאסף כשהיא מופעלת מחדש ורושמת מעבד אירוע כללי באמצעות
ProfilingManager
.
איך פועלת הגבלת קצב של יצירת בקשות
ProfilingManager
כולל מגביל קצב גם לאפליקציות בודדות וגם למערכת כולה. הגבלת הקצב מונעת מאפליקציות להשתמש ביותר מדי משאבי מערכת על ידי הקלטה של יותר מדי פרופילים, כי סשן פרופיילינג מלא צורך הרבה משאבים.
גם האפליקציה וגם המערכת להגבלת קצב הבקשות מקצות עלות לכל סוג של פרופיל שנאסף, כי חלק מהפרופילים דורשים יותר משאבים מאחרים. הגבלת האפליקציות קובעת כמה אפליקציה מסוימת יכולה להקליט על סמך העלות הכוללת שלה. עם זאת, מגביל המערכת שולט בעלות הכוללת של כל הפרופילים שתועדו על ידי כל האפליקציות.
הגבלת הקצב מגדירה עלות כוללת שכל אפליקציה יכולה להשתמש בה (העלות הזו זהה לכל האפליקציות). כל פרופיל משתמש בחלק מסך העלות, בהתאם לסוג הפרופיל.
הגבלת הקצב מתבססת על שלושה פרקי זמן:
- לשעה: יש עלות מקסימלית מותרת לשעה.
- לכל יום: יש עלות מקסימלית שמותר להוציא בכל יום.
- לשבוע: יש עלות מקסימלית מותרת לשבוע.
הגבלת הקצב מגדירה עלות כוללת שאפשר להשתמש בה בכל אחת מהתקופות האלה. לדוגמה, יכול להיות שאפליקציה תוכל להקליט X פרופילים בשעה, Y ביום ו-Z בשבוע. אם האפליקציה תגיע למגבלה באחת מהתקופות האלה,
בקשות עתידיות לפרופילים יסתיימו בשגיאה ERROR_FAILED_RATE_LIMIT_PROCESS
.
התקופות האלה פועלות באופן דומה להגבלת קצב יצירת הבקשות ברמת המערכת. עם זאת, מגביל הקצב של המערכת הוא מגבלה גלובלית שמשותפת לכל האפליקציות. המגבלה הזו מוגדרת בנפרד ממכסות השימוש באפליקציות השונות, אבל כל פרופיל תורם למגבלה הזו, לפי אותם פרקי זמן של שעה, יום ושבוע. אם תגיעו למגבלה הגלובלית הזו, תקבלו את השגיאה ERROR_FAILED_RATE_LIMIT_SYSTEM
.