چندین موقعیت وجود دارد که ممکن است مجموعه نمایه آنطور که انتظار می رود پیش نرود:
- مجموعه نمایه به دلیل یک خطای داخلی با شکست مواجه می شود. اگر این اتفاق بیفتد، API
ProfilingResult
به شما در مورد خطاها می گوید. - مجموعه نمایه به دلیل محدودیت نرخ ناموفق است. برای اطلاعات بیشتر، نحوه عملکرد محدود کردن نرخ را ببینید
- مجموعه نمایه موفقیت آمیز بود، اما برنامه فوراً مطلع نمی شود. اگر برنامه در طول مجموعههای پروفایل طولانی از کار بیفتد، ممکن است این اتفاق بیفتد. اگر برنامه بسته شود، سیستم به طور خودکار متوقف می شود و نمایه را ذخیره می کند. برنامه هنگام راه اندازی مجدد و ثبت یک شنونده عمومی با
ProfilingManager
از نمایه جمع آوری شده مطلع می شود.
نحوه عملکرد محدود کردن نرخ
ProfilingManager
شامل یک محدود کننده نرخ هم برای برنامه های فردی و هم برای کل سیستم است. محدود کننده نرخ با ضبط نمایه های بیش از حد از استفاده برنامه ها از منابع سیستمی بیش از حد جلوگیری می کند، زیرا یک جلسه پروفایل کامل از منابع زیادی استفاده می کند.
محدودیتدهندههای نرخ برنامه و سیستم، هزینهای را برای هر نوع نمایه جمعآوریشده تعیین میکنند، زیرا برخی از پروفایلها نسبت به سایرین منابع فشردهتر هستند. محدود کننده برنامه کنترل می کند که یک برنامه جداگانه چقدر می تواند بر اساس هزینه کل آن ضبط کند. با این حال، محدود کننده سیستم، هزینه کل تمام پروفایل های ثبت شده توسط همه برنامه ها را کنترل می کند.
محدود کننده نرخ کل هزینه ای را تعیین می کند که هر برنامه می تواند استفاده کند (این هزینه برای همه برنامه ها یکسان است). هر پروفیل بسته به نوع آن از بخشی از این هزینه کل استفاده می کند.
محدود کننده نرخ از سه دوره زمانی استفاده می کند:
- در هر ساعت: حداکثر هزینه مجاز در هر ساعت وجود دارد.
- در روز: حداکثر هزینه مجاز در روز وجود دارد.
- در هر هفته: حداکثر هزینه مجاز در هفته وجود دارد.
محدود کننده نرخ یک هزینه کل را تعیین می کند که می تواند در هر یک از این دوره ها استفاده شود. به عنوان مثال، ممکن است به یک برنامه اجازه داده شود پروفایل های X را در ساعت، Y در روز و Z را در هفته ضبط کند. اگر برنامه شما در هر یک از این دورهها به حد مجاز خود برسد، درخواستهای نمایه آینده منجر به خطای ERROR_FAILED_RATE_LIMIT_PROCESS
میشود.
این دوره های زمانی برای محدود کردن نرخ در سطح سیستم به طور مشابه عمل می کنند. با این حال، محدود کننده نرخ سیستم یک محدودیت جهانی است که توسط همه برنامهها مشترک است. این محدودیت جدا از سهمیههای برنامههای فردی تنظیم شده است، اما هر نمایه با استفاده از دورههای ساعتی، روزانه و هفتگی یکسان به آن کمک میکند. در صورت رسیدن به این محدودیت جهانی، خطای ERROR_FAILED_RATE_LIMIT_SYSTEM
را دریافت خواهید کرد.