Mijn AI-app is ineens traag geworden
Hij deed het prima met tien rijen en kruipt nu bij duizend. Vier oorzaken die bijna altijd de verklaring zijn, van makkelijkst naar vervelendst om te repareren.
Traag worden gebeurt zelden geleidelijk. Het valt ineens op, meestal rond de eerste echte gebruikers. Dat komt doordat de meeste van deze oorzaken pas beginnen te wringen boven een paar honderd rijen, en tot dan toe alles snel oogt hoeveel er ook fout zit.
1. Alles ophalen en daarna pas filteren
De klassieker. De app haalt de hele tabel op en zoekt daarna in de browser het juiste eruit. Met dertig rijen merk je niets. Met tienduizend stuur je bij elk bezoek tienduizend rijen over de lijn, waarvan er twintig getoond worden. Filteren en sorteren horen in de database, niet in het scherm.
2. Een verzoek per rij
Je haalt een lijst orders op en vraagt daarna per order de klantnaam erbij. Vijftig orders is eenenvijftig verzoeken. Dit is het patroon dat AI-tools het vaakst neerzetten, omdat het per stuk logisch leest. Eén query die de klant meteen meeneemt vervangt de hele stapel.
3. Geen index op waar je op zoekt
Zoek je op e-mailadres, filter je op status, sorteer je op datum: zonder index loopt de database elke rij langs. Dat is bij duizend rijen niet te merken en bij honderdduizend pijnlijk. Een index toevoegen is één regel en het effect is meestal een factor tien of meer.
4. Beelden die niemand verkleind heeft
Foto's die gebruikers uploaden komen rechtstreeks uit een telefoon: vier megabyte per stuk. Staan er twintig op een pagina, dan is dat tachtig megabyte voordat er iets te zien is. Verkleinen bij het uploaden lost dit permanent op.
Welke van de vier het is, zie je zo
- Druk op F12, tabblad Network, laad de pagina opnieuw. Tientallen vergelijkbare verzoeken achter elkaar is oorzaak 2.
- Eén verzoek dat megabytes groot is, is oorzaak 1.
- Eén verzoek dat klein is maar seconden duurt, is oorzaak 3.
- Verzoeken naar plaatjes die samen het grootste deel van de tijd opeten, is oorzaak 4.
Traagheid is bijna nooit een gebrek aan servers. Het is meestal te veel vragen, of één vraag die te veel terugkrijgt.
Alle vier zijn goed te repareren zonder de app opnieuw te bouwen, en meestal zit je binnen een dag op iets wat wel meeschaalt. Wat het niet oplost, is een datamodel dat er structureel naast zit; dat merk je doordat elke reparatie een nieuwe traagheid ergens anders blootlegt.