69 lines
2.5 KiB
Markdown
69 lines
2.5 KiB
Markdown
# É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`](https://github.com/google/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](../../../misc/packaging/common/config.yml)).
|
|
|
|
**Exemple:** Visualiser l'utilisation mémoire de Bouncer
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
go test -bench="BenchmarkProxies/$BENCH_CASE" -run='^$' ./internal/bench
|
|
```
|
|
|
|
Par exemple:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```shell
|
|
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:
|
|
|
|
```shell
|
|
go tool pprof -web ./internal/bench/testdata/proxies/basic-auth.prof
|
|
```
|
|
|
|
### Comparer les évolutions
|
|
|
|
```bash
|
|
# 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
|
|
```
|