Helius
Kontakt mig

Platform

Mål – lad være med at gætte

Mål først. Ret derefter det, der faktisk var langsomt.

Problemet

Applikationen er langsommere, end den burde være, og der er flere teorier end målinger. Én vil have caching, en anden vil skrive servicen om, og den egentlige flaskehals er en forespørgsel uden indeks eller en storm af syscalls, som ingen har ledt efter. Mere hardware hjælper ikke længere, og jeres overvågning sender alarmer, som alle har lært at ignorere.

Tilgangen

Jeg måler på det kørende system – flamegraphs, tracing i kernen, query plans og realistiske belastningstest – og finder ud af, hvor tiden faktisk går. Så retter vi det, dokumenterer forbedringen med tal og efterlader målinger, der svarer på de spørgsmål, I stiller under en hændelse, i stedet for dashboards, som ingen åbner.

Det får I

  • Rapport med flamegraphs og målinger før og efter
  • Tracing af syscall- og I/O-flaskehalse i kernen med eBPF
  • Analyse af databaseforespørgsler – med indekser og omskrivninger lagt ind
  • Metrics, logs og traces, der hænger sammen, på komponenter, I selv driver
  • Alarmer, der reagerer på det, brugerne mærker, i stedet for på CPU-grafer
  • Måleopsætningen bliver stående – installeret, dokumenteret og til at gentage uden mig

Eksempel

perf/slow-syscalls.bt

#!/usr/bin/env bpftrace
// Which syscalls is this process actually waiting on?
// Usage: slow-syscalls.bt <PID>. Runs for 30s, then prints a latency
// histogram (µs) per syscall. No instrumentation, no restart, no code change.
//
// Keys are syscall numbers, which differ per architecture:
// `ausyscall <n>` (from auditd) names them.

tracepoint:raw_syscalls:sys_enter
/pid == $1/
{
    @start[tid] = nsecs;
}

tracepoint:raw_syscalls:sys_exit
/pid == $1 && @start[tid]/
{
    @us[args->id] = hist((nsecs - @start[tid]) / 1000);
    delete(@start[tid]);
}

interval:s:30 { exit(); }

END { clear(@start); }

Fortæl mig, hvad der er galt

Et par linjer om problemet er nok. Inden for én arbejdsdag svarer jeg med, hvad jeg tror, det er, hvor lang tid det cirka tager, og om I overhovedet har brug for mig. Nogle gange er det ærlige svar nej.

Jeg svarer inden for én arbejdsdag · Ingen kontaktformularer, ingen sporingspixels og ingen automatiske salgsmails.