Le Blog des Experts en Performance Informatique

Analyse système et réseau : généralités – Part 2

Après avoir vu comment superviser la partie processeur et mémoire, attardons nous maintenant sur les accès disques et les connexions réseaux.

 Monitoring Disk and Network

Cette commande fournit des informations à propos de l'ensemble des périphériques d'entrée et sortie : les disques, le ou les terminaux, les autres périphériques séries.

1. La commande Iostat (ou sar -d)

La syntaxe de base est la suivante :

iostat interval count

exemple : iostat -xtc 5 2
avg-cpu:  %user   %nice    %sys %iowait   %idle
           0.01    0.00    0.01    0.04   99.93
                      extended device statistics                    tty         cpu
device    r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b  tin tout  us sy wt id
cmdk0     1.0    2.3   10.9   19.4  0.0  0.0    5.4   0   1    0   59  13  3  0 84
fd0       0.0    0.0    0.0    0.0  0.0  0.0  986.3   0   0
sd0       0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd1       0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 

		     extended device statistics                    tty         cpu
device    r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b  tin tout  us sy wt id
cmdk0     0.0    9.3    0.0   35.3  0.0  0.0    3.5   0   3    0    0   7  2  0 90
fd0       0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd0       0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd1       0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0

 

  • wait : le nombre moyen de transactions en attente d'être traitées
  • actv : le nombre moyen de transactions en cours de traitement (elles ne sont plus dans la queue mais ne sont pas pour autant terminées)
  • svc _t : le temps moyen de traitement
  • %w : le pourcentage du temps durant lequel des transactions sont en attente d'un traitement
  • %b : pourcentage du temps durant lequel le disque est occupé

Les colonnes r/s, w/s, kr/s, et kw/s montrent respectivement les read et write par secondes en octets et kilo-octets.

Le temps de traitement et le temps d'occupation donnent une bonne impression sur l'état des entrées / sorties d'un disque. Un taux d'occupation de plus de deux-tiers (%b)  et un temps de traitement de plus de 50 millisecondes (svc_t) sont les indicateurs d'un goulot d'étranglement.

 

Conseils et optimisations :

  • répartir la charge sur plusieurs disques en utilisant un meilleur partitionnement, et en distribuant le swap (pagination) sur plusieurs disques.
  • augmenter la RAM pour diminuer la pagination; c'est le cas par exemple lors de l'utilisation de SGBD qui sont très gourmands en ressource mémoire, mais peu demandeurs de capacités de traitement rapides par le processeur.
  • utiliser autant que faire se peut les ressources en cache des applications développées. Les architectures techniques intègrent de plus en plus de serveurs de cache qui ne sollicitent que la mémoire et une faible charge de CPU. Optimiser les requêtes SQL pour optimiser les coûts de ressource CPU.
  • si le disque est utilisé à  100%, on peut répartir le système de fichier sur plusieurs disques en utilisant un SAN ou plusieurs NAS;

2. La commande Netstat

C'est l'incontournable des indicateurs réseaux. En règle générale, on retrouve au moins trois ou quatre options communes aux différents OS.

  • -a  montre l'état de tous les sockets
  • -r  montre les tables de routage du système
$ netstat -i

Name  Mtu Net/Dest  Address    Ipkts  Ierrs  Opkts  Oerrs  Collis Queue
lo0  8232 loopback localhost   77814  0      77814    0         0   0
hme0 1500 server1  server1  10658566  3    4832511    0    279257   0

Les valeurs importantes à  noter sont :

  • collisions (Collis)
  • les paquets envoyés (Opkts)
  • les paquets reçus (Ipkts)
  • les paquets erronés (Ierrs)

Conseils et optimisations :

  • (Collis+Ierrs+Oerrs)/(Ipkts+Opkts) > 2% peut indiquer un problème physique dans le réseau;
  • (Collis/Opkts) > 10% indique que l'interface réseau est surchargée et qu'il faut redistribuer les charges;
  • (Ierrs/Ipkts) > 25% montre un gros nombre de paquets abandonnés en raison d'un réseau surchargé;
  • s'il y a plus de 120 collisions par secondes, le réseau est surchargé;
  • si la somme des paquets entrants et des paquets sortants est supérieure à  600 pour une interface de 10-Mbs et à  6000 pour une interface de 100-Mbs, le segment est trop chargé et une redistribution du réseau s'impose;
  • un nombre important d'erreurs dans les colonnes "Ierrs" et "Oerrs" indique un problème de transmission et/ou de réception. Il se peut que la source et la destination aient des réglages différents comme full-duplex d'un côté et half-duplex de l'autre.
#netstat -nar -p tcp

Local Address Remote Address Swind    Send-Q Rwind  Recv-Q State
*.*           *.*            0        0      24576  0     IDLE
*.22          *.*            0        0      24576  0     LISTEN
*.32775       *.*            0        0      24576  0     LISTEN
*.32776       *.*            0        0      24576  0     LISTEN
*.*           *.*            0        0      24576  0     IDLE
192.168.1.184.22 192.168.1.186.56806 38912 0 24616  0     ESTABLISHED
192.168.1.184.22 192.168.1.183.58672 18048 0 24616  0     ESTABLISHED

Les valeurs importantes à  noter sont :

  • CLOSED : fermé le socket n'est pas utilisé
  • LISTEN : à l'écoute de connexions entrantes
  • SYN_SENT : essai d'établir une connexion
  • SYN_RECEIVED : synchronisation initiale de la connexion en cours
  • ESTABLISHED : connexion établie
  • CLOSE_WAIT : fermeture à  distance (côté serveur par exemple); en attente de fermeture du socket
  • FIN_WAIT_1 : socket fermé terminaison de la connexion
  • CLOSING : fermé, puis fermeture à  distance; attente d'accusé de réception
  • LAST_ACK : terminaison à  distance puis fermeture; attente d'accusé de réception
  • FIN_WAIT_2 : socket fermée; en attente de terminaison de la part du pair distant
  • TIME_WAIT : en attente après fermeture pour la retransmission de la terminaison distante

 

Conseils et optimisations :

Trop de connexions avec un état FIN_WAIT  signifie généralement qu'il faut modifier le paramétrage TCP/IP car les connexions ne sont pas terminées (en tout cas terminées proprement d'après les séquences prévues) et des connexions inactives s'accumulent.

Cela peut conduire à  un épuisement des ressources système. Le mieux est de contrôler le TCP "timeout" qui ferme au bout d'un certain nombre de secondes une connexion inutilisée.

Le pool peut ainsi être utilisé par de nouvelles connexions.

Laisser un commentaire

Mots-clés
RSS Feed
Share on TwitterSubmit to reddit