Votre site est en HTTP/2 et vous souhaitez tester rapidement sa robustesse et son élasticité afin de valider sa capacité à accueillir un nombre important de visiteurs ?

Je vous recommande d'installer la commande Linux h2load disponible sur Ubuntu que vous pouvez aussi retrouver sous WSL2.

H2load est un outil de benchmarking HTTP/2 and HTTP/1.1. Il supporte le SSL/TLS et le texte en clair.

Comment installer H2load ?

H2load est disponible sur les distributions Ubuntu au travers du paquet "nghttp2-client". Vous pouvez aussi retrouver son code source sur GitHub.

$ sudo apt-get install nghttp2-client

Comment utiliser H2load ?

Une fois l'utilitaire installé, il vous suffit d'exécuter la commande suivante pour simuler 100 clients qui produiront au total 10000 requêtes HTTP.

h2load -n10000 -c100 -t2 https://monsite.com

Vous pouvez aussi lancer un test sur une durée de 60 secondes avec un démarrage progressif sur 10 secondes :

h2load -c100 -t2 https://monsite.com --duration=60 --warm-up-time=10

Les paramètres les plus importants de l'outil sont les suivants :

Option Description Valeur par défaut
-n Le nombre total de requêtes 1
-c Le nombre total de clients concurrents 1
-m Le nombre de stream ouverts par clients 1
-t Le nombre de threads qui seront créés et sur lesquels les clients seront distribués 1
--duration La durée du test (incompatible avec l'option n)
--warm-up-time La durée de démarrage progressif du script

Une fois le test terminé, H2load vous produira un résultat de la forme suivante :

finished in 7.08s, 141164.80 req/s, 555.33MB/s
requests: 1000000 total, 1000000 started, 1000000 done, 1000000 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1000000 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 4125025824 bytes total, 11023424 bytes headers (space savings 93.07%), 4096000000 bytes data
                     min         max         mean         sd        +/- sd
time for request:    15.31ms    146.85ms     69.78ms      9.26ms    92.43%
time for connect:     1.08ms     25.04ms     10.71ms      9.80ms    64.00%
time to 1st byte:    25.36ms    184.96ms     79.11ms     53.97ms    78.00%
req/s (client)  :    1412.04     1447.84     1426.52       10.57    63.00%

Comment analyser les résultats ?

Le nombre de requêtes en succès vous permettra de valider que votre serveur Web n'a pas retourné d'erreur. Si vous observez des requêtes en "failed", "errored" ou "timeout", cela signifie que vous avez atteint la capacité maximale du serveur distant.

La performance du serveur peut être mesurée au travers du nombre de requêtes par secondes reçues par l'outil. Plus le nombre est important, plus cela signifie que votre serveur est capable d'encaisser un nombre d'appels simultanés important.

Enfin, si vous souhaitez optimiser les temps de réponse de votre site Internet et sa robustesse, je vous recommande d'abandonner Apache et d'utiliser le micro-cache Nginx.

Bons tests et soyez prudent dans l'utilisation de cet outil, il peut rapidement mettre en défaut un site Internet de production.