Lignes de commande permettant de mesurer le temps de réponse d'un site web.

Mesurer le temps de réponse d'un site web#

Il peut être utile de mesurer le temps de réponse d'un site web, directement depuis le terminal. Voici quelques méthodes permettant de réaliser ces tests.

Au sommaire :

cURL#

cURL est un outil génial, qui permet, en ligne de commande, de transférer des données sur de nombreux protocoles (HTTP, HTTP/2, HTTP/3, FTP, SFTP, RTMP, etc.).

Installation de cURL#

Si vous ne l'avez pas encore installé, allons-y :

sudo apt install curl

Mesures avec cURL#

Maintenant on peut mesurer le temps de réponse d'un site web :

curl -o /dev/null -s -w "%{time_connect} + %{time_starttransfer} = %{time_total}\n" URL_À_TESTER

Par exemple, si je veux tester le temps de réponse du site https://caisse-solidarite.fr/, je lance :

curl -o /dev/null -s -w "%{time_connect} + %{time_starttransfer} = %{time_total}\n" https://caisse-solidarite.fr/

Et ça me retourne :

0.052064 + 111.297523 = 111.422634

Oula, pratiquement deux minutes (111 secondes) avant le premier transfert. Mais ce n'est pas étonnant, en cette journée de grève nationale du 23 Mars 2023, de nombreuses personne doivent être en train de soutenir les grévistes (ou alors le site se fait DoS).

Mesures avancées avec cURL#

Lors de notre mesure, on peut également afficher encore plus d'informations, en faisant par exemple :

curl -o /dev/null -s -w "\n \
   namelookup:  %{time_namelookup}s\n \
      connect:  %{time_connect}s\n \
   appconnect:  %{time_appconnect}s\n \
  pretransfer:  %{time_pretransfer}s\n \
     redirect:  %{time_redirect}s\n \
starttransfer:  %{time_starttransfer}s\n \
-------------------------\n \
        total:  %{time_total}s\n" \
URL_À_TESTER

Dans notre exemple, je lance un :

curl -o /dev/null -s -w "\n \
   namelookup:  %{time_namelookup}s\n \
      connect:  %{time_connect}s\n \
   appconnect:  %{time_appconnect}s\n \
  pretransfer:  %{time_pretransfer}s\n \
     redirect:  %{time_redirect}s\n \
starttransfer:  %{time_starttransfer}s\n \
-------------------------\n \
        total:  %{time_total}s\n" \
https://caisse-solidarite.fr

Ce qui me retourne, en ce jeudi noir :

    namelookup:  0.023426s
       connect:  0.047286s
    appconnect:  0.167965s
   pretransfer:  0.168024s
      redirect:  0.000000s
 starttransfer:  127.972907s
 -------------------------
         total:  128.117317s

On voit bien qu'il faut un temps considérable (127 secondes), au serveur web hébergeant caisse-solidarite.fr, pour préparer et transférer la réponse.

À titre de comparaison, je lance la même commande sur https://google.fr, ce qui me retourne :

   namelookup:  0.043273s
       connect:  0.063028s
    appconnect:  0.258498s
   pretransfer:  0.258833s
      redirect:  0.000000s
 starttransfer:  0.287419s
 -------------------------
         total:  0.287597s

Bien entendu, pour connaître les autres possibilités offertes par cURL, n'hésitez pas à lancer un petit man curl.

Apache#

Le serveur web Apache propose aussi un outil fort pratique appelé "ApacheBench".

Installation de Apache Bench#

Pour l'installer, on peut faire un :

sudo apt install apache2-utils

Utilisation de Apache Bench#

Pour lancer un test simple :

ab URL_À_TESTER

Exemple :

ab https://caisse-solidarite.fr/

Ce qui me retourne.. déjà pas mal d'informations, jugez plutôt :

This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking caisse-solidarite.fr (be patient).....done


Server Software:        Apache
Server Hostname:        caisse-solidarite.fr
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-ECDSA-AES256-GCM-SHA384,256,256
Server Temp Key:        X25519 253 bits
TLS Server Name:        caisse-solidarite.fr

Document Path:          /
Document Length:        136199 bytes

Concurrency Level:      1
Time taken for tests:   0.294 seconds
Complete requests:      1
Failed requests:        0
Total transferred:      136399 bytes
HTML transferred:       136199 bytes
Requests per second:    3.40 [#/sec] (mean)
Time per request:       294.123 [ms] (mean)
Time per request:       294.123 [ms] (mean, across all concurrent requests)
Transfer rate:          452.88 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       70   70   0.0     70      70
Processing:   224  224   0.0    224     224
Waiting:      140  140   0.0    140     140
Total:        294  294   0.0    294     294

Utilisation avancée de Apache Bench#

Voici quelques options découvertes en faisant un man ab :

Attention : faire attention lorsqu'on joue avec ces paramètres, on peut vite provoquer, justement, une attaque de type DoS si nous faisons trop de demandes en même temps ! À manier avec prudence, donc.

Crédits#

La photo "Crowd down Stockton street" de Niall Kennedy est sous licence CC BY-NC 2.0.

This page was last edited on , generated from this markdown. Content is available under the Creative Commons CC BY-SA 3.0 License unless otherwise noted. This site is ad-free and contains no third party cookies or tracking, just as the Web should remain.
HomepageBack to top