Prestatiebewaking is een continu proces van het verzamelen en analyseren van metrieken van de applicatie om vertragingen, geheugenlekken en niet-optimaal resourcegebruik op te sporen. Volgens Android Performance Guide, 2025 stelt monitoring u in staat om afwijkingen in metrieken in een vroeg stadium te detecteren en degradatie van de gebruikerservaring te voorkomen voordat massale klachten beginnen.
Belangrijkste punten
Prestatiebewaking is de praktijk van het kwantitatief beoordelen van het gedrag van een applicatie door het verzamelen van metrieken van uitvoeringstijd, geheugengebruik, framesnelheid en energieverbruik. In tegenstelling tot crashrapportage, die alleen fatale fouten registreert, volgt prestatiebewaking geleidelijke degradatie: de app werkt, maar langzamer dan zou moeten.
Volgens Google (2024) sluit 53% van de gebruikers een app als deze langer dan 3 seconden laadt. Elke extra seconde vertraging vermindert de conversie met gemiddeld 20% per categorie. Dit maakt prestatiebewaking niet alleen een technische praktijk, maar een zakelijke noodzaak voor mobiele producten.
Moderne prestatiebewaking omvat vier niveaus: clientzijde (iOS, Android), netwerk (API-verzoeken, WebSocket), backend-services en infrastructuur. Bij mobiele ontwikkeling ligt de focus op clientmetrieken, omdat de meeste prestatieproblemen precies op het apparaat van de gebruiker ontstaan.
Voor volledige monitoring moeten vijf groepen metrieken worden gevolgd, die elk verantwoordelijk zijn voor een aspect van de gebruikerservaring. FPS (frames per second) toont de vloeiendheid van animaties en scrollen — een waarde onder 30 frames per seconde wordt als vertraging ervaren.
Koude starttijd van de app — van het tikken op het pictogram tot volledige gereedheid van de interface. Warme starttijd — terugkeer uit de achtergrond. Responstijd op gebruikersactie (tap-to-response). Starttijd wordt voor Android gemeten via ActivityManager, voor iOS via dyld en premain-tijd. Volgens Firebase Performance bedraagt de mediane koude starttijd voor top-100 apps 1,8 seconden.
RAM-verbruik mag niet meer dan 80% van het beschikbare volume op het apparaat bedragen, anders begint het systeem de app uit de achtergrond te verwijderen. Geheugenvoetafdruk wordt gevolgd via Xcode Instruments (iOS) en Android Profiler. Geheugenlekken worden ontdekt door toenemend verbruik bij herhaalde bewerkingen — zoals het navigeren tussen schermen.
Uitvoeringstijd van HTTP-verzoek, antwoordgrootte, frequentie van time-outs en fouten. Netwerklatentie is vooral kritisch voor mobiele apps die werken onder onstabiele verbindingen (3G, metro, lift, roaming). Het wordt aanbevolen om de p95-responsetijd te volgen — deze toont precies de ervaring van de „zwaarste” gebruikers met de slechtste netwerkomstandigheden.
| Metriek | Normaal | Kritiek |
|---|---|---|
| Cold start | tot 2 s | meer dan 4 s |
| FPS | 55–60 | minder dan 30 |
| API response | tot 500 ms | meer dan 2 s |
| Memory usage | tot 200 MB | meer dan 400 MB |
| ANR rate | minder dan 0,1% | meer dan 0,5% |
Real User Monitoring (RUM) verzamelt gegevens van echte gebruikersapparaten in de productieomgeving. Deze methode toont de werkelijke vertragingen die gebruikers ervaren, rekening houdend met hun apparaten, OS-versies, netwerk en geolocatie. RUM geeft het meest nauwkeurige beeld van prestaties, maar hangt af van welke gebruikers in de steekproef zijn opgenomen.
Synthetic Monitoring daarentegen voert vooraf gedefinieerde scenario's uit op testapparaten in gecontroleerde omstandigheden. Het maakt het mogelijk om regressie te detecteren voordat het gebruikers bereikt en problemen in dezelfde omgeving te reproduceren. Firebase Test Lab en BrowserStack bieden synthetische tests op echte apparaten zonder handmatige start.
De optimale strategie is een combinatie van beide benaderingen: synthetische tests vangen regressies in de CI-fase, en RUM geeft het echte beeld in productie. Volgens Datadog (2024) detecteren teams die beide methoden gebruiken 35% meer prestatieproblemen voordat ze incidenten worden.
Firebase Performance Monitoring is een gratis tool van Google voor het verzamelen van prestatiemetrieken op iOS en Android. Het meet automatisch de starttijd van de app, HTTP-verzoeken en schermrendering zonder dat u code hoeft te schrijven. Voor installatie volstaat het om de SDK aan het project toe te voegen en de Performance-module in de Firebase-console te activeren.
Na het aansluiten van de SDK maakt Firebase Performance automatisch een trace voor elk HTTP-verzoek via URLSession (iOS) of OkHttp (Android). Schermrendering wordt gemeten voor UIViewController en Activity, waarbij de tijd van onCreate/viewDidLoad tot voltooiing van de eerste render wordt geregistreerd. Alle metrieken worden geaggregeerd in de Firebase-console, uitgesplitst naar app-versies, apparaten en landen.
import com.google.firebase.perf.FirebasePerformance
import com.google.firebase.perf.metrics.Trace
class PaymentService {
private val firebasePerf = FirebasePerformance.getInstance()
fun processPayment(amount: Double) {
val trace = firebasePerf.newTrace("payment-flow")
trace.start()
trace.putAttribute("amount", amount.toString())
// betalingsverwerking
trace.stop()
}
}
De code maakt een aangepaste trace voor het betalingsscenario met een bedrag-attribuut. Via deze trace in de Firebase-console kunt u de mediane en p95-betalingstijd zien, gegroepeerd per app-versie en apparaat.
Firebase onderschept automatisch netwerkverzoeken en registreert de URL, antwoordcode, payloadgrootte en uitvoeringstijd. Voor OkHttp op Android werkt automatische instrumentatie zonder extra configuratie. Netwerkverzoeken worden in de console weergegeven met groepering per endpoint, waardoor snel vertraging van een specifieke API kan worden opgespoord.
Standaard metrieken dekken de algemene prestaties, maar voor diagnose van bedrijfsprocessen is instrumentatie van specifieke scenario's nodig. Aangepaste traces maken het mogelijk om de uitvoeringstijd van authenticatie, het laden van nieuwsfeeds, beeldverwerking of gegevenssynchronisatie te meten.
Elke aangepaste trace moet een betekenisvolle naam hebben in het formaat „scenario-actie” en attributen bevatten voor filtering. Bijvoorbeeld, een trace „image-upload” met attributen „file_size” en „compression_quality” maakt het mogelijk om de afhankelijkheid van laadtijd van de afbeeldingsgrootte te detecteren. Het wordt aanbevolen om niet meer dan 20 aangepaste traces per scherm te maken — overmatige instrumentatie creëert ruis en bemoeilijkt de analyse.
import FirebasePerformance
func trackImageUpload(data: Data) {
let trace = Performance.startTrace(name: "image-upload")
trace?.setValue(data.count, forAttribute: "file_size")
trace?.setValue("high", forAttribute: "compression")
// afbeelding laden
trace?.stop()
}
Het voorbeeld in Swift maakt een trace voor het laden van een afbeelding met attributen voor bestandsgrootte en compressieniveau. In de Firebase-console worden deze attributen velden voor het groeperen en filteren van metrieken.
Het verzamelen van metrieken zonder meldingssysteem is nutteloos. Alerting moet het team informeren wanneer metrieken de toegestane grenzen overschrijden, waarbij de drempelwaarden zijn onderverdeeld in drie niveaus: waarschuwing (warning), kritiek (critical) en storing (outage). Elk niveau bepaalt het meldingskanaal: warning — naar het Slack-kanaal van het team, critical — naar PagerDuty van de dienstdoende ingenieur, outage — massale verzending naar alle belanghebbenden.
Voor mobiele metrieken wordt aanbevolen om dynamische drempelwaarden op basis van percentielen te gebruiken: p95 van de koude starttijd overschrijdt 4 seconden — kritieke alert. Statische drempels (bijv. CPU > 90%) werken slechter omdat ze geen rekening houden met normale belastingschommelingen afhankelijk van het tijdstip en de dag van de week. Firebase Performance ondersteunt het configureren van alerts via de Firebase Console met verzending naar Slack, PagerDuty en e-mail, met de mogelijkheid tot escalatie bij uitblijvende bevestiging.
Volgens Incident Management Survey (2024) missen teams die alerts configureren op basis van percentielen in plaats van gemiddelden 45% minder incidenten. De gemiddelde waarde (average) vlakt pieken af — p95 toont gegarandeerd het slechtste scenario voor gebruikers, ongeacht het tijdstip en seizoensgebonden belastingschommelingen.
Veelgestelde vragen
Belangrijkste tools: Firebase Performance Monitoring (gratis, basisfunctionaliteit), Dynatrace (zakelijke RUM), New Relic Mobile, Datadog RUM en Instabug (specialisatie in mobiele apps). De keuze hangt af van het budget en de vereiste analysediepte.
Metrieken moeten in realtime worden verzameld en weergegeven op een dashboard met een vertraging van maximaal 5 minuten. Het analyseren van trends wordt eenmaal per week aanbevolen. Automatische alerts moeten worden geactiveerd bij overschrijding van drempelwaarden zonder menselijke tussenkomst — dit is de enige manier om te reageren op problemen voordat gebruikers ze opmerken.
Minimale set: koude starttijd, FPS, ANR-percentage (Android) of watchdog-beëindigingen (iOS), HTTP-foutpercentage en geheugengebruik. Dit is voldoende om 80% van de prestatieproblemen in een typisch mobiel project te detecteren. Naarmate de app groeit, worden metrieken van specifieke schermen en bedrijfsscenario's toegevoegd voor nauwkeurigere diagnose.
Ja, de SDK voor prestatiebewaking voegt 1–3 MB toe aan de app-grootte, afhankelijk van de tool. Firebase Performance Monitoring voegt ongeveer 1,2 MB toe. Het wordt aanbevolen om de SDK alleen op te nemen in test- en productie-builds en uit te sluiten van debug-builds.
Als de wachttijd voor een API-antwoord hoog is maar de servermetrieken normaal zijn — ligt het probleem aan de clientzijde (apparaatnetwerk, DNS, TLS-handshake). Als de server hoge belasting of trage databasequery's vertoont — ligt het probleem aan de backendzijde. Distributed tracing geeft een definitief antwoord door het clientverzoek te koppelen aan de serververwerking.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook