Hey est un petit programme qui envoie de la charge http à une application Web, de la même façon que Vegeta.

Installation

Sur MacOS :

brew update && brew install go && go get -u github.com/rakyll/hey

Nous ferions mieux de lire les instructions d’installation du guide mis à jour: https://github.com/rakyll/hey#installation  

Utiliser hey est simple comme bonjour:

hey -h2 -n 5000 -c 100 https://anyHTTP2Website.com/

Petit test avec mon site :

MacBook-Pro-de-admin:~ admin$ hey -h2 -n 5000 -c 100 https://gabrielsagnard.fr/

Summary:
  Total:	4.1996 secs
  Slowest:	0.6798 secs
  Fastest:	0.0371 secs
  Average:	0.0829 secs
  Requests/sec:	1190.5925


Response time histogram:
  0.037 [1]	|
  0.101 [4438]	|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.166 [457]	|■■■■
  0.230 [3]	|
  0.294 [1]	|
  0.358 [2]	|
  0.423 [5]	|
  0.487 [7]	|
  0.551 [17]	|
  0.615 [32]	|
  0.680 [37]	|


Latency distribution:
  10% in 0.0546 secs
  25% in 0.0630 secs
  50% in 0.0646 secs
  75% in 0.0778 secs
  90% in 0.1063 secs
  95% in 0.1402 secs
  99% in 0.5855 secs

Details (average, fastest, slowest):
  DNS+dialup:	0.0006 secs, 0.0371 secs, 0.6798 secs
  DNS-lookup:	0.0038 secs, 0.0000 secs, 0.1880 secs
  req write:	0.0000 secs, 0.0000 secs, 0.0017 secs
  resp wait:	0.0691 secs, 0.0189 secs, 0.2450 secs
  resp read:	0.0004 secs, 0.0001 secs, 0.0043 secs

Status code distribution:
  [200]	5000 responses

-h2: Utiliser la requête du client http2

-n: Nombre de requêtes à exécuter

-c: Nombre de demandes simultanées

Traduction des résultats :

  • 100% de demandes réussies -> le fait de bien s'exécuter avec 100 utilisateurs simultanés ça roule.
  • L'histogramme du temps de réponse montrait environ 95% des demandes avec une latence de 0,1 seconde -> BOOYAH !

Le serveur  

Habituellement, avant et après l'exécution des tests de charge, nous devons mesurer la configuration de notre serveur pour voir ce que nous devons configurer et ce qui peut être amélioré.

+ Configuration du seuil de réseau

+ Configuration du serveur Web (nginx, php-fpm…)

+ Charges CPU, consommation de mémoire  

Remarque: Si un pare-feu est installé sur votre serveur, vous devez ajouter à la liste blanche l’adresse IP de votre ordinateur que vous utilisez pour exécuter le test de charge, car elle imitera un très grand nombre de demandes simultanées.

...VS WRK

What is WRK ? wrk est un outil d'analyse comparative HTTP moderne capable de générer une charge importante lorsqu'il est exécuté sur un seul processeur multicœur. Il combine une conception multithread avec des systèmes de notification d'événements évolutifs tels que epoll et kqueue.

Installation :

brew install wrk

Usage, avec le site meteofrance.com :

MacBook-Pro-de-admin:~ admin$ wrk -t12 -c400 -d30s http://meteofrance.com
Running 30s test @ http://meteofrance.com
  12 threads and 400 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   143.00ms   65.46ms   1.09s    93.58%
    Req/Sec   242.65     61.16   405.00     72.63%
  86111 requests in 30.10s, 32.44MB read
Requests/sec:   2860.54
Transfer/sec:      1.08MB

Conclusion

Deux beaux outils en Go d'une grande puissance depuis un terminal, que je vous conseille de découvrir.