Einschränkungen beim Profiling

Es gibt mehrere Situationen, in denen die Profilerstellung möglicherweise nicht wie erwartet verläuft:

  • Die Profilerstellung schlägt aufgrund eines internen Fehlers fehl. In diesem Fall werden Sie von der ProfilingResult API über die Fehler informiert.
  • Die Profilerfassung schlägt aufgrund von Ratenbegrenzung fehl. Weitere Informationen finden Sie unter Funktionsweise der Ratenbegrenzung.
  • Die Profilerstellung ist erfolgreich, aber die App wird nicht sofort benachrichtigt. Dies kann passieren, wenn die App bei langen Profilerfassungen abstürzt. Wenn die App geschlossen wird, beendet und speichert das System das Profil automatisch. Die App wird über das erfasste Profil informiert, wenn sie neu gestartet wird und einen allgemeinen Listener mit ProfilingManager registriert.

So funktioniert die Ratenbegrenzung

ProfilingManager enthält eine Ratenbegrenzung sowohl für einzelne Apps als auch für das gesamte System. Die Ratenbegrenzung verhindert, dass Apps zu viele Systemressourcen verbrauchen, indem zu viele Profile aufgezeichnet werden, da eine vollständige Profiling-Sitzung viele Ressourcen benötigt.

Sowohl die App- als auch die System-Ratenbegrenzer weisen jedem erfassten Profiltyp Kosten zu, da einige Profile ressourcenintensiver sind als andere. Mit dem App-Limiter wird gesteuert, wie viel eine einzelne App basierend auf ihren Gesamtkosten aufzeichnen kann. Der Systembegrenzer steuert jedoch die Gesamtkosten aller Profile, die von allen Apps aufgezeichnet werden.

Der Ratenbegrenzer legt Gesamtkosten fest, die für jede App gelten (diese Kosten sind für alle Apps gleich). Für jedes Profil wird ein Teil dieser Gesamtkosten berechnet, abhängig vom Profiltyp.

Die Ratenbegrenzung verwendet drei Zeiträume:

  • Pro Stunde:Es gibt maximale Kosten pro Stunde.
  • Pro Tag:Es gibt maximale Kosten, die pro Tag zulässig sind.
  • Pro Woche:Es gibt maximale Kosten, die pro Woche zulässig sind.

Der Ratenbegrenzer legt Gesamtkosten fest, die in jedem dieser Zeiträume verwendet werden können. Eine App darf beispielsweise X Profile pro Stunde, Y Profile pro Tag und Z Profile pro Woche aufzeichnen. Wenn Ihre App in einem dieser Zeiträume das Limit erreicht, führen zukünftige Profilanfragen zu einem ERROR_FAILED_RATE_LIMIT_PROCESS-Fehler.

Diese Zeiträume funktionieren ähnlich wie beim Ratenlimit auf Systemebene. Der System-Ratenbegrenzer ist jedoch ein globales Limit, das von allen Apps gemeinsam genutzt wird. Dieses Limit wird unabhängig von den individuellen App-Kontingenten festgelegt. Jedes Profil trägt jedoch dazu bei, wobei dieselben stündlichen, täglichen und wöchentlichen Zeiträume verwendet werden. Wenn dieses globale Limit erreicht ist, wird der Fehler ERROR_FAILED_RATE_LIMIT_SYSTEM angezeigt.