Vous êtes nombreux à avoir votre serveur Web sous Linux, et vous vous demandez probablement comment trouver les processus qui consomment des IO (lecture / écriture disque) ?

Je me suis posé la même question cet après-midi et j'ai trouvé un petit script perl qui m'a permis de trouver le processus coupable des consommations en IO de mon serveur.

La première étape consiste à activer les messages du kernel concernant les IO :

echo 1 > /proc/sys/vm/block_dump

La deuxième étape consiste à récupérer le script perl "iodump" :

wget http://aspersa.googlecode.com/svn/trunk/iodump

Il suffit ensuite de l'exécuter :

while true; do sleep 1; dmesg -c; done | perl iodump

Un Control+C vous générera une synthèse des processus qui consomment des IO.

^C# Caught SIGINT.
TASK                   PID      TOTAL       READ      WRITE      DIRTY DEVICES
jbd2/sda2-8            244        151          0        151          0 sda2
flush-8:0              243         55          0         55          0 sda2
bash                 30163          7          0          7          0 sda2
lighttpd             16720          2          2          0          0 sda2
vi                   30500          1          0          1          0 sda2

Le script vous génère une liste des processus utilisant le plus le disque dur de votre serveur. Il faut maintenant comprendre l'origine de ces IO au sein du processus, un "lsof" avec le PID du processus vous donnera des informations sur les fichiers ouverts par celui-ci.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.