Test de performances d’un disque sur Linux

Vous disposez d’un ou de plusieurs serveurs Linux ? Vous voulez tester les performances de votre disque en lecture/écriture ? Il existe plusieurs solutions, mais je ne vais en détailler que deux :

  • la commande hdparm,
  • une création/lecture de fichier avec la commande dd.

Test avec hdparm

hdparm est un utilitaire qui permet de modifier les paramètres d’un périphérique disque, mais il permet également de lancer un test de performance des temps de lecture via la commande :

hdparm -Tt /dev/sda

Ce qui donne sur mon serveur :

Performances en lecture d'un disque sur Linux

Paramètres :

  • -t : test des performances de lecture,
  • -T test des performances du cache.

Attention : la commande hdparm, si elle est mal utilisée, peut entraîner la corruption d’un disque.

Test avec la commande dd

La commande dd permet de créer, convertir et manipuler des fichiers sur Linux : en la combinant avec une autre commande et les bons paramètres, on peut en tirer les temps d’écriture et de lecture pour un fichier d’une taille donnée.

Le test de vitesse d’écriture se fait de la façon suivante :

time sh -c "dd if=/dev/zero of=/home/woueb bs=4096 count=256000 && sync"

On créé un fichier /home/woueb composé de 256000 blocs de 4Ko.

Test de performances en écriture d'un disque sur Linux

Et pour le test en lecture, on fait l’inverse : on lit le fichier /home/woueb précédemment créé.

time sh -c "dd if=/home/woueb of=/dev/zero bs=4096 count=256000 && sync"

Test de performances en lecture d'un disque sur Linux

Et voilà le travail ! :)

Partager vos rapports avec Pingdom

Pingdom est un service en ligne qui  permet de surveiller un site, ou une application via des tests réguliers, j’en avais parlé au mois de septembre. Depuis quelques jours, il est possible de partager un tout nouveau rapport en ligne, très réussi !

Il faut activer le rapport public dans les paramètres de votre compte, ça donnera ceci :

Pingdom : présentation d'un rapport public

Pingdom : présentation d'un rapport public

Une vue annuelle, qui permet de voir l’uptime et le temps de réponse moyen.

Pingdom : uptime mensuel

Pingdom : uptime mensuel

Également très sympa, une vue mensuelle qui colore en rouge les moments où le service n’était pas disponible.

Pingdom : disponibilité d'un site pour un mois donné

Pingdom : disponibilité d'un site pour un mois donné

Concept très intéressant pour ceux qui sortent un service en ligne et qui veulent communiquer sur leur disponibilité : en quelques clics, il est possible d’avoir des rapports très fournis et user-friendly.

Source : Pingdom Blog.

Htop, une version améliorée de la commande Linux top

Sur un OS linux, on a tendance a utiliser régulièrement la commande « top«  pour visualiser l’activité des processus du serveur ou du PC. Seulement, le résultat affiché est relativement « fade » et n’est pas ergonomique (l’affichage ne tient pas compte de la taille de l’écran/du terminal).

Voici un exemple d’affichage de la commande « top » :

TOP : commande Linux

TOP : visualisation de l'activité des processus

Bien heureusement il existe un outil comblant certaines lacunes de « top » mais plutôt méconnu : « htop« . Démarrant plus rapidement, il offre un certain nombre d’avantages par rapport à son grand frère, notamment :

  • interface plus conviviale et adaptée à la taille de l’affichage,
  • possibilité de killer un processus sans connaître son PID,
  • possibilité de modifier en live la priorité (nice) d’un processus sans connaître son PID,
  • pas de délai entre les actions,
  • support de la souris,
  • etc.

Visualisation de la commande « htop«  :

HTOP : commande Linux

Visualisation des processus avec HTOP

HTOP : visualisation de l'activité des processus

HTOP : visualisation de l'activité des processus

Verdict ? Adopté !

Comment afficher un phpinfo() en ligne de commande

Lors d’installations ou de configurations de serveurs, on recherche souvent l’une ou l’autre informations sur les paramètres de PHP. Deux choix s’offrent à vous :

  • faire un fichier php contenant la directive phpinfo() et l’afficher dans un navigateur,
  • afficher le résultat de phpinfo() en ligne de commande.

Pour ce deuxième cas, j’ai déjà vu des personnes faire de longues commandes du type :

echo « < ?php phpinfo()? > » | php

Pour, il existe une commande toute faite :

php -i

Afficher un phpinfo() en ligne de commande

Afficher un phpinfo() en ligne de commande

D’autres astuces ? :)

Test de montée en charge de votre site avec Load Impact

Vous avez créé une application, ou un site web susceptible d’avoir un grand nombre de visiteurs ? Pour éviter l’effet Slashdot (indisponibilité de votre site suite à une rapide augmentation du nombre de visites), il est conseillé de faire des tests de montée en charge.

Plutôt orienté « sites web », Load Impact (comme son nom l’indique) permet de simuler un nombre croissant de visiteurs sur votre site et de vérifier l’impact sur les temps de chargement, l’accès aux pages, etc.

Le résultat obtenu est plutôt visuel : outre les chiffres, vous trouverez dans votre rapport des graphiques d’évolution.

Test de montée en charge avec Load Impact

Test de montée en charge avec Load Impact

On peut voir que ce test :

  • a duré 10 minutes,
  • que le volume de données total transféré est presque de 450 Mo pour 22500 requêtes,
  • a consisté à un incrément de 10 utilisateurs toutes les 2 minutes pour atteindre 50 utilisateurs simultanés.

Une version gratuite mais limitée est disponible : elle permet de faire 4 tests par jour, avec 50 utilisateurs simultanés au maximum. Pour les autres versions, il faudra sortir la carte bancaire, mais les prix sont totalement abordables !

Load Impact : prix

Load Impact : prix

J’ai eu l’occasion de tester des solutions professionnelles pendant quelques années et je trouve que :

  • la configuration des scénarios est un peu faiblarde,
  • la montée en charge devrait être mieux gérée : possibilité de faire des paliers d’utilisateurs en dent de scie, etc.

Cependant, cette solution de test de montée en charge proposée par Load Impact a l’avantage d’être hébergée : il n’est pas nécessaire d’installer un client sur un (ou plusieurs) poste(s).

Enfin, quid de la simulation d’utilisateurs visualisant des vidéos en streaming (type Youtube) ? J’ai trouvé ceci dans la FAQ :

Load Impact will load the video file, if it is accessible via standard HTTP/HTTPS, but each client will stream (load) the file as fast as possible, which means you’re likely to get much « heavier » clients than you would in a real scenario.

Pour ceux qui veulent se donner une idée, le résultat du test gratuit sur mon blog est disponible en ligne, et pour ceux qui veulent l’essayer : Load Impact.

Vous obtenez de bons résultats ? ;)

Merci à Gonzague pour la découverte

Comment synthétiser rapidement le statut d’un serveur MySQL

Le moteur de base de données MySQL est très largement utilisé dans le monde. Même si l’installation et le paramétrage par défaut de MySQL suffit amplement pour un site web ou un blog, il est nécessaire de l’optimiser dans le cadre d’une utilisation plus « corporate« .

Deux leviers majeurs sont disponibles :

  • l’optimisation du serveur de base de données (ou de la ferme de serveurs),
  • l’optimisation du code.

La commande « show status » (en CLI, ou via phpMyAdmin) offre un certain nombre d’informations sur le statut d’un serveur MySQL.

MySQL : résultat de la commande show status dans phpMyAdmin

MySQL : résultat de la commande show status dans phpMyAdmin

Cependant, les informations rendues ne sont pas toujours exploitables facilement (ni rapidement) pour les personnes qui ne sont pas DBA.

C’est là que mysqlreport intervient : c’est un simple exécutable qui va vous permettre de synthétiser le statut d’un serveur MySQL. Il suffit de télécharger ce fichier (pas d’installation nécessaire), et de le lancer en lui renseignant les paramètres de connexion au serveur MySQL, pour qu’il vous exporte un résultat assez sympa !

Jugez plutôt :

Statut MySQL avec mysqlreport
Pour ceux qui voudrait plus détails sur les valeurs obtenues et savoir comment les interpréter (et les comprendre), je vous invite à lire ceci : The guide to understand mysqlreport.