Quelques outils pour charger un serveur web et surveiller son état

Outils de test de charge

  • ab :

Exemple de charge avec 500 clients concurrents, qui vont lancer une charge de 50000 requêtes au total.

ab -c 500 -n 50000 "https://mon_serveur/page.html"
  • siege

Siege à la différence d’ab lance un maximum de requêtes avec les clients concurrents dont il dispose sur une durée définie lorsque l’option -t est utilisiée. Si l’on utilise l’option -r, cela définit le nombre de requête par client

Dans cet exemple, lancement de 500 clients concurrents qui vont charger 5 fois, on aura 2500 requêtes lancées au total.

siege "https://mon_serveur/script.php" -c 500 -r 5

nb : attention l’option -t prévaut sur l’option -r.

  • jmeter

Avec jmeter, on commence à entrer dans le domaine du test fonctionnel car on peut créer des scénarios et autres. Il est un peu gros pour simplement tester des temps de réponses sur une requête.

  • gatling

Comme jmeter, mais une équipe française derrière.

Superviser le serveur ciblé

Les outils en ligne de commande

  • top : cpu, mémoire…
  • nmon : cpu, mémoire… (plus « visuel » que top)
  • lsof : les descripteurs de fichier
  • netstat : les sockets
  • df : espace disque général
  • du : espace disque par fichier
  • free : utilisation de la mémoire
  • mount -l : point de montage
  • sar : cpu, mémoire (package sysstat)
  • pidstat : process (package sysstat)
  • cat /proc/… : lecture des variables kernel en direct, le plus efficace pour comprendre d’où viennent les limites ou les valeurs par défaut
  • ulimit : visualisation des limites
  • sysctl -a : visualisation des variables kernel (plus rapide que /proc et en lien avec systemd)
  • monit : supervision générale avec affichage

Outils pour avoir des graphes

  • nagios : un classique (grosse artillerie mais efficace)
  • munin : le top pour faire des graphes (commence aussi à devenir une grosse artillerie)
  • m/monit : une couche http au dessus de monit (plus simple que les deux précédents mais sous licence payante)