bouncer/doc/fr/tutorials/profiling.md

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