English English French French Spanish Spanish German German
Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Comment effectuer une analyse comparative des performances du serveur Web?

analyse comparative
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Connaissez-vous votre temps de réponse moyen du site Web? Savez-vous combien d'utilisateurs simultanés votre site peut gérer?

Les tests de charge sont essentiels pour que les applications Web connaissent le site Web nominale. Si vous devez choisir le serveur Web, l'une des premières choses à faire est d'effectuer le test de charge et de voir lequel fonctionne le mieux pour vous.

L'analyse comparative peut vous aider à décider;

  • Quel serveur Web fonctionne le mieux
  • Nombre de serveurs dont vous avez besoin pour traiter x nombre de demandes
  • Quelle configuration vous donne les meilleurs résultats
  • Quelles piles technologiques fonctionnent le mieux
  • Quand votre site fonctionnera plus lentement ou en panne

Il ya plusieurs outils en ligne pour effectuer un test de résistance; cependant, si vous recherchez une solution interne ou souhaitez uniquement évaluer les performances du serveur Web, vous pouvez utiliser Banc Apache et alternativement certains des outils énumérés ci-dessous.

J'ai utilisé le serveur Web Apache et Nginx hébergé sur DigitalOcean pour le tester.

ApacheBench

Banc Apache (ab) est un programme de ligne de commande open source qui fonctionne avec n'importe quel serveur Web. Dans cet article, je vais vous expliquer comment installer ce petit programme et effectuer le test de charge pour comparer les résultats.

Apache

Installons ApacheBench en utilisant une commande yum.

yum install httpd-tools

Si vous disposez déjà de httpd-tools, vous pouvez l'ignorer.

Voyons maintenant comment il fonctionne pour 5000 requêtes avec une simultanéité de 500.

[root@lab ~]# ab -n 5000 -c 500 http://localhost:80/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software:        Apache/2.2.15
Server Hostname:        localhost
Server Port:            80
Document Path:          /
Document Length:        4961 bytes
Concurrency Level:      500
Time taken for tests:   13.389 seconds
Complete requests:      5000
Failed requests:        0
Write errors:           0
Non-2xx responses:      5058
Total transferred:      26094222 bytes
HTML transferred:       25092738 bytes
Requests per second:    373.45 [#/sec] (mean)
Time per request:       1338.866 [ms] (mean)
Time per request:       2.678 [ms] (mean, across all concurrent requests)
Transfer rate:          1903.30 [Kbytes/sec] received
Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0   42  20.8     41    1000
Processing:     0  428 2116.5     65   13310
Waiting:        0  416 2117.7     55   13303
Total:         51  470 2121.0    102   13378
Percentage of the requests served within a certain time (ms)
50%    102
66%    117
75%    130
80%    132
90%    149
95%    255
98%  13377
99%  13378
100%  13378 (longest request)
[root@lab ~]#

Comme vous pouvez le voir, Apache a géré 373 requêtes par seconde, et il a fallu un total de 13.389 secondes pour traiter le total des demandes.

Vous savez maintenant que la configuration par défaut peut répondre à ces nombreuses demandes.Ainsi, lorsque vous apportez des modifications à la configuration, vous pouvez refaire le test pour comparer les résultats et choisir le les meilleures une.

Nginx

Faisons le test de ce que nous avons fait pour Apache afin que vous puissiez comparer celui qui fonctionne le mieux.

[root@lab ~]# ab -n 5000 -c 500 http://localhost:80/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software:        nginx/1.10.1
Server Hostname:        localhost
Server Port:            80
Document Path:          /
Document Length:        3698 bytes
Concurrency Level:      500
Time taken for tests:   0.758 seconds
Complete requests:      5000
Failed requests:        0
Write errors:           0
Total transferred:      19660000 bytes
HTML transferred:       18490000 bytes
Requests per second:    6593.48 [#/sec] (mean)
Time per request:       75.832 [ms] (mean)
Time per request:       0.152 [ms] (mean, across all concurrent requests)
Transfer rate:          25317.93 [Kbytes/sec] received
Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0    6  11.0      2      53
Processing:     5   19   8.2     17      53
Waiting:        0   18   8.2     16      47
Total:         10   25  17.4     18      79
Percentage of the requests served within a certain time (ms)
50%     18
66%     21
75%     21
80%     22
90%     69
95%     73
98%     75
99%     76
00%     79 (longest request)
[root@lab ~]#

WOW!

As-tu vu ça?

Nginx géré 6593 requêtes par seconde! Un gagnant.

Donc, vous voyez simplement en comparant avec deux serveurs Web, vous aurez une idée de celui à choisir pour votre application Web.

Le test ci-dessus est sur CentOS 6.8, 64 bits. Vous pouvez essayer plusieurs combinaisons de versions du système d'exploitation et du serveur Web pour des résultats optimaux.

Vous n'aimez pas ApacheBench pour une raison quelconque? Pas de soucis, il y en a beaucoup d'autres que vous pouvez utiliser pour effectuer un chargement HTTP.

SIEGE

SIÈGE est un utilitaire de test de charge HTTP pris en charge sous UNIX. Vous pouvez placer plusieurs URL dans un fichier texte pour charger les tests. Vous pouvez installer siege en utilisant yum.

# miam installer siège

Lançons le test avec 500 requêtes simultanées pendant 5 secondes.

[root@lab ~]# siege -q -t 5S -c 500 http://localhost/ Lever le siège du serveur... terminé. Transactions : 4323 hits Disponibilité : 100.00 % Temps écoulé : 4.60 s Données transférées : 15.25 Mo Temps de réponse : 0.04 s Taux de transaction : 939.78 trans/s Débit : 3.31 Mo/s Concurrence : 37.97 Transactions réussies : 4323 Transactions ayant échoué : 0 Transaction la plus longue : 1.04 Transaction la plus courte : 0.00 [root@lab ~]#

Décomposer les paramètres.

-q - pour l'exécuter silencieusement (sans afficher les détails de la demande)

-t - courir pendant 5 secondes

-c - 500 requêtes simultanées

Ainsi, comme vous pouvez le voir, la disponibilité est de 100% et le temps de réponse est de 0.04 seconde. Vous pouvez modifier le paramètre de test de charge en fonction de votre objectif.

Ali

Ali est un outil de test de charge relativement nouveau pour effectuer une analyse en temps réel. Il prend en charge plusieurs plates-formes à installer, y compris Docker.

Une fois installé, exécutez ali pour voir les détails d'utilisation.

root@lab:~# ali
no target given
Usage:
  ali [flags] <target URL>

Flags:
  -b, --body string         A request body to be sent.
  -B, --body-file string    The path to file whose content will be set as the http request body.
      --debug               Run in debug mode.
  -d, --duration duration   The amount of time to issue requests to the targets. Give 0s for an infinite attack. (default 10s)
  -H, --header strings      A request header to be sent. Can be used multiple times to send multiple headers.
  -k, --keepalive           Use persistent connections. (default true)
  -M, --max-body int        Max bytes to capture from response bodies. Give -1 for no limit. (default -1)
  -m, --method string       An HTTP request method for each request. (default "GET")
  -r, --rate int            The request rate per second to issue against the targets. Give 0 then it will send requests as fast as possible. (default 50)
  -t, --timeout duration    The timeout for each request. 0s means to disable timeouts. (default 30s)
  -v, --version             Print the current version.

Examples:
  ali --duration=10m --rate=100 http://host.xz

Author:
  Ryo Nakao <ryo@nakao.dev>
root@lab:~#

Comme vous pouvez le voir ci-dessus, vous avez la possibilité d'envoyer des en-têtes HTTP, la durée du test, la limite de débit, le délai d'expiration, etc. J'ai fait un test rapide sur Outils Geekflare et voici la sortie ressemble.

Le rapport est interactif et donne des informations détaillées sur la latence.

Gobench

Gobench est écrit en langage Go et un utilitaire de test de charge simple pour évaluer les performances du serveur Web. Il prend en charge plus de 20,000 XNUMX utilisateurs simultanés, ce qu'ApacheBench ne fait pas.

Apache JMeter

Jmètre est l'un des outils open source les plus populaires pour mesurer les performances des applications Web. JMeter est une application basée sur Java et pas seulement un serveur Web, mais vous pouvez l'utiliser contre PHP, Java. ASP.net, SOAP, REST, etc.

JMeter a une interface graphique conviviale décente, et la dernière version 3.0 nécessite Java 7 ou supérieur pour lancer l'application. Vous devez essayer JMeter si votre objectif est d'optimiser les performances de l'application Web.

wrk

travail est un autre outil moderne de mesure des performances pour mettre une charge sur votre serveur Web et vous donner des détails sur la latence, la demande par seconde, le transfert par seconde, etc.

Avec wrk, vous pouvez spécifier d'exécuter un test de charge avec un certain nombre de threads.

Prenons un exemple d'exécution d'un test pendant 5 minutes avec 500 utilisateurs simultanés avec 8 threads.

wrk –t8 –c500 -d300s http://localhost

Autocannon

Inspiré par le travail, canon automatique est écrit en Node.js. Vous pouvez l'utiliser par programme, via une API ou un utilitaire autonome. Tout ce dont tu as besoin c'est NodeJS installé comme condition préalable.

Vous pouvez contrôler un certain nombre de connexions, demandes, durée, travailleurs, délai d'expiration, taux de connexion et offrir des tonnes d'options pour comparer vos applications Web.

Curl-loader

chargeur de boucles est écrit en C pour simuler la charge de l'application et prend en charge SSL / TLS. En plus du test de page Web, vous pouvez également utiliser cet outil open-source pour effectuer un chargement sur des serveurs FTP.

Vous pouvez créer un plan de test avec un mélange de HTTP, HTTPS, FTP et FTPS dans une configuration de lot unique.

httperf

, httperf est un outil performant qui se concentre sur les benchmarks micro et macro. Il prend en charge les protocoles HTTP / 1.1 et SSL.

Si vous disposez du nombre attendu d'utilisateurs simultanés et que vous souhaitez tester si votre serveur Web peut répondre à un certain nombre de requêtes, vous pouvez utiliser la commande suivante.

httperf --server localhost --port 80 --num-conns 1000 --rate 100

La commande ci-dessus testera avec 100 requêtes par seconde pour 1000 requêtes HTTP.

Tsung

tsung est un outil de test de stress distribué multi-protocole pour stresser les serveurs HTTP, SOAP, PostgreSQL, LDAP, XAMP, MySQL. Il prend en charge HTTP / 1.0, HTTP / 1.1 et les cookies sont automatiquement gérés.

La génération d'un rapport est possible avec Tsung.

Conclusion

J'espère que les outils d'analyse comparative ci-dessus vous donneront une idée des performances de votre serveur Web et décideront de ce qui fonctionne le mieux pour votre projet.

Ensuite, n'oubliez pas de surveiller les performances de votre site Web.

Merci à nos commanditaires
Plus de bonnes lectures sur la gestion des tests
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder