2.5 KiB
Étudier les performances de Bouncer
In situ
Il est possible d'activer via la configuration de Bouncer de endpoints capable de générer des fichiers de profil au format pprof
. Par défaut, le point d'entrée est .bouncer/profiling
(l'activation et la personnalisation de ce point d'entrée sont modifiables via la configuration).
Exemple: Visualiser l'utilisation mémoire de Bouncer
go tool pprof -web http://<bouncer_proxy>/.bouncer/profiling/heap
L'ensemble des profils disponibles sont visibles à l'adresse http://<bouncer_proxy>/.bouncer/profiling
.
En développement
Le package ./internal
est dédié à l'étude des performances de Bouncer. Il contient une suite de benchmarks simulant de proxies avec différentes configurations de layers afin d'évaluer les points d'engorgement sur le traitement des requêtes.
Voir le répertoire ./internal/bench/testdata/proxies
pour voir les différentes configurations de cas.
Lancer les benchmarks
Le plus simple est d'utiliser la commande make bench
qui exécutera séquentiellement tous les benchmarks. Il est également possible de lancer un benchmark spécifique via la commande suivante:
go test -bench="BenchmarkProxies/$BENCH_CASE" -run='^$' ./internal/bench
Par exemple:
# Pour exécuter ./internal/bench/testdata/proxies/basic-auth.yml
go test -bench='BenchmarkProxies/basic-auth' -run='^$' ./internal/bench
Visualiser les profils d'exécution
Vous pouvez visualiser les profils d'exécution via la commande suivante:
go tool pprof -web path/to/file.prof
Par défaut l'exécution des benchmarks créera automatiquement des fichiers de profil dans le répertoire ./internal/bench/testdata/proxies
.
Par exemple:
go tool pprof -web ./internal/bench/testdata/proxies/basic-auth.prof
Comparer les évolutions
# Lancer un premier benchmark
go test -bench="BenchmarkProxies/$BENCH_CASE" -run='^$' ./internal/bench
# Faire une sauvegarde du fichier de profil
cp ./internal/bench/testdata/proxies/$BENCH_CASE.prof ./internal/bench/testdata/proxies/$BENCH_CASE-prev.prof
# Faire des modifications sur les sources
# Lancer un second benchmark
go test -bench="BenchmarkProxies/$BENCH_CASE" -run='^$' ./internal/bench
# Visualiser la différence entre les deux profils
go tool pprof -web -base=./internal/bench/testdata/proxies/$BENCH_CASE-prev.prof ./internal/bench/testdata/proxies/$BENCH_CASE.prof