در شرایط زیر، ممکن است درخواست نمایه فوراً تکمیل نشود یا نتایج را ارائه نکند:
- محدود کردن نرخ: برای محافظت از عملکرد دستگاه، جمعآوری دادهها محدود میشود (به نحوه عملکرد محدود کردن نرخ مراجعه کنید).
خاتمه برنامه قبلاز تحویل: اگر برنامهتان درطول ضبط بسته شود یا ازکار بیفتد، سیستم متوقف میشود و نمایه را در پسزمینه ذخیره میکند و دفعه بعد که برنامهتان اجرا میشود (در پیشزمینه یا پسزمینه) و شنونده سراسری را ثبت میکند، نتیجه صفبندیشده را تحویل میدهد. سیستم نتایج صفبندیشده تحویلنشده را تا ۷ روز درانتظار ثبت شنونده نگه میدارد؛ اگر برنامهتان شنوندهای را ظرف ۷ روز ثبت نکند، نتیجه صفبندیشده حذف میشود.
خطاهای دیگر: اگر جمعآوری ناموفق باشد (برای مثال، بهدلیل درخواست نامعتبر یا خطای داخلی)،
ProfilingResultکد و پیام خطا را گزارش میکند.
نحوه عملکرد محدودیت نرخ
ازآنجاییکه ضبط نمایهها منابع زیادی مصرف میکند، ProfilingManager
محدودیت نرخ را هم در سطح فرایند و هم در سطح سیستم اعمال میکند تا از
عملکرد دستگاه و عمر باتری محافظت کند. انواع مختلف نمایه هزینههای منابع متفاوتی دارند و سیستم سهمیهها را در پنجرههای زمانی متوالی در دو سطح ردیابی میکند:
- محدود کردن نرخ پردازش: هزینه منابع نمایههای جمعآوریشده توسط برنامه شما را درمقابل سهمیه هر برنامه ردیابی میکند. هر برنامه سهمیه یکسانی دریافت میکند و فعالیت نمایهسازی از برنامههای دیگر در دستگاه بر محدودیت برنامه شما تأثیر نمیگذارد. اگر برنامهتان در هر بازه زمانی به سهمیهاش برسد،
درخواستها با
ERROR_FAILED_RATE_LIMIT_PROCESSناموفق میشود. - محدود کردن نرخ سیستم: هزینه ترکیبی منابع نمایههای جمعآوریشده در همه برنامههای دستگاه را درمقابل سهمیه جهانی مشترک ردیابی میکند.
چون همه برنامهها در این محدودیت سراسری دستگاه نقش دارند، ممکن است درخواست با
ERROR_FAILED_RATE_LIMIT_SYSTEMناموفق باشد، حتی اگر برنامه شما سهمیه پردازش خودش را تمام نکرده باشد.
مدیریت حجم نمایه در تولید
ازآنجاییکه محدودیتهای نرخ در سطح دستگاه به نوع نمایه و فعالیت کلی سیستم بستگی دارد، سعی نکنید سهمیههای دقیق محدودیت نرخ محلی را در برنامهتان ردیابی یا پیشبینی کنید. درعوض، بر ایجاد درخواست نمایهسازی هنگام وقوع یک سفر کاربر یا ناهنجاری مرتبط تمرکز کنید و اجازه دهید ProfilingManager کنترل پهنای باند روی دستگاه را مدیریت کند.
برای بهحداکثر رساندن پوشش در این زمینه و درعینحال قابلمدیریت نگه داشتن پهنای باند بارگذاری و هزینههای فضای ذخیرهسازی، حجم کلی نمایه خود را بااستفاده از پلاتفرمهای آزمایش و بخشبندی جمعیت (مانند پیکربندی از راه دور یا پرچمهای آزمایش A/B) کنترل کنید:
- نمونهگیری از پایگاه کاربر: نمایهسازی را برای درصد کوچک و تصادفی از جلسههای کاربر فعال کنید، بهجای اینکه در هر اجرا از هر کاربر درخواست نمایه کنید.
- بخشبندی براساس گروه: نسخههای خاص برنامه، سطوح دستگاه، نسخههای سیستمعامل، یا مناطقی را که درحال بررسی پسرفت در آنها هستید هدفیابی کنید (برای مثال، فعال کردن جمعآوری رونوشت پشته Java در دستگاههای با حافظه دسترسی تصادفی (RAM) کم که نرخ کمبود حافظه بالایی دارند).
- راهاندازهای بخش و درخواستهای مستقیم در بین کاربران: راهاندازهای نمایهسازی و درخواستهای نمایهسازی مستقیم مختلفی را به بخشهای کاربر جداگانه اختصاص دهید تا برخی کاربران یک نمایه را ضبط کنند درحالیکه دیگران نمایه دیگری را ضبط میکنند. چون همه ضبطها در یک دستگاه از سهمیه یکسان برای هر برنامه استفاده میکنند، جداسازی آنها در بخشهای کاربر مانع از این میشود که راهاندازها یا درخواستهای با بسامد بالاتر سهمیه موردنیاز برای ضبطهای با بسامد پایینتر را در یک دستگاه تمام کنند.