Nespėliok — pirmiausia matavai. Lėtumas gali kilti iš kliento, tinklo, serverio arba duomenų bazės. Sistemingas metodas nustato kur dingsta laikas, tada fiksuoja didžiausią dalyvį vietoj atsitiktinio optimizavimo.
Nespėliok — pirmiausia matavai. Lėtumas gali kilti iš kliento, tinklo, serverio arba duomenų bazės. Sistemingas metodas nustato kur dingsta laikas, tada fiksuoja didžiausią dalyvį vietoj atsitiktinio optimizavimo.
1. MEASURE → where is the time spent? client render, network, server, DB?
2. REPRODUCE → confirm it reliably (same endpoint, payload, user)
3. TRACE → use APM/distributed traces to find the slow span
4. CHECK RECENT CHANGES → deploys, config, traffic, data growth
5. ISOLATE → layer by layer, narrow to one component
6. FIX the biggest contributor → re-measure to confirm
Naudok naršyklės Network/Performance skirtuką ir serverio timing norėdamas padalinti iš viso. Naudingas paskaidymas:
Total 1200ms =
DNS/connect 20ms
server TTFB 900ms ← the bottleneck is server-side
download 80ms
client render 200ms
Žiūrėk percentiles, ne vidurkius: p50 (tipinis vartotojas) vs p99 (blogiausias scenarijus). Greitas p50 su lėtu p99 rodo atsitiktines problemas — blokinių konkurencija, šaltos talpyklos, lėtas DB replikas arba GC pauzės — ne vienodą problemą.
APM įrankiai (traces) rodo tiksliai kur dingsta laikas užklausos viduje:
GET /orders 950ms
├─ auth check 10ms
├─ SELECT orders 30ms
└─ loop: SELECT user per order 900ms ← N+1 query, the real cause
Trace nukreipia tiesiai į problemingą skambutį. Tada patikrink neseniai atliktus pokyčius — deployment, trūkstamą indeksą arba 10x duomenų augimą dažnai paaiškina staigą regresija.
Spėliojimas švaistą valandas optimizuojant netinkamą sluoksnį. Pirmiausia matavimas, lėto spano sekimas ir p50 vs p99 palyginimas virto neaiškią "tai lėta" į konkrečią, ištaisomą priežastį — ir pakartotinis matavimas įrodo, kad pataisymas tikrai veikia.