Le dépannage d'un réseau lent ou d'abandons de paquets réseau peut être délicat. En plus d'une communication réseau plus lente, d'autres symptômes peuvent être observés, tels que :
- Les tentatives de connexion à un serveur avec ssh et/ou sftp entraînent des dépassements de délai ou une réponse retardée.
- Lorsque la charge du réseau augmente, un nombre élevé de retransmissions réseau est observé.
- Il peut y avoir un grand nombre d'abandons de paquets dans la sortie de la commande " ifconfig eth[x] ".
Certains autres symptômes incluent également :
– La sortie de la commande :netstat -s affiche des valeurs croissantes pour les statistiques suivantes :(exécutez plusieurs fois 'netstat -s') :
13336 packets pruned from receive queue because of socket buffer overrun 516 times the listen queue of a socket overflowed 516 SYNs to LISTEN sockets ignored 2040077 packets collapsed in receive queue due to low socket buffer TCPBacklogDrop: 744165
– La sortie de la commande :ethtool -S eth[x] affiche des valeurs croissantes par rapport au compteur :"rx_fw_discards":
rx_fw_discards: 4493
Causes des performances réseau plus lentes
Plusieurs raisons peuvent expliquer le ralentissement des performances du réseau. Mais certaines des causes possibles sont :
- Le réseau est déjà très chargé, jusqu'à sa capacité maximale et il y a congestion.
- Les tampons de réception configurés ne sont pas suffisants pour la charge du réseau.
- Il y a des abandons de paquets en raison d'erreurs au niveau de la couche physique.
Résoudre les problèmes de performances réseau lentes
1. Vérifiez le débit du réseau à l'aide de l'outil iperf et déterminez si l'utilisation de la bande passante du réseau se rapproche du débit maximal observé.
Comment utiliser Iperf pour tester les performances du réseau sous Linux2. Définissez les valeurs des paramètres réseau de manière appropriée pour prendre en charge le débit réseau maximal. Recherchez la valeur du produit de délai de bande passante (BDP) et définissez la taille de la mémoire tampon du réseau en conséquence. Il est calculé comme le produit de la bande passante du lien et du temps d'aller-retour.
Par exemple :
– Pour un réseau de 1 Gb/s et un temps de trajet de 0,1 s, le BDP=(0,1 * 10^9)/8. Sur un tel réseau, définissez les valeurs de paramètre suivantes sous le fichier :/etc/sysctl.conf
# vi /etc/sysctl.conf net.core.rmem_max = 12500000 net.core.wmem_max = 12500000 net.ipv4.tcp_rmem = 4096 87380 12500000 net.ipv4.tcp_wmem = 4096 65536 12500000
Et augmentez également les paramètres suivants :
# vi /etc/sysctl.conf net.core.netdev_max_backlog = 30000 net.ipv4.tcp_max_syn_backlog = 4096
Et puis exécutez la commande :
# sysctl -p
a) Pour les deux modifications, il n'est pas nécessaire de redémarrer le système.
b) Après cette modification, il est nécessaire de surveiller la sortie de la commande "netstat -s" et de vérifier si les compteurs suivants continuent d'augmenter :
packets pruned from receive queue because of socket buffer overrun times the listen queue of a socket overflowed SYNs to LISTEN sockets ignored packets collapsed in receive queue due to low socket buffer TCPBacklogDrop
3. Augmentez la taille de la mémoire tampon de l'anneau RX de la carte réseau. Il y a un compromis lors de la définition de ce nombre. Une valeur plus élevée pourrait retarder le traitement des paquets et une valeur inférieure pourrait entraîner des pertes de paquets lorsque le pilote correspondant rencontre un retard dans le traitement des paquets entrants.
a) Généralement, commencez par doubler la taille de l'anneau RX et surveillez la sortie de la commande "ethtool -S eth[x]".
# ethtool -G eth[x] rx 512
b) Pour rendre cette modification permanente, ajoutez ce qui suit au fichier :/etc/sysconfig/network-scripts/ifcfg-eth[x] :
# vi /etc/sysconfig/network-scripts/ifcfg-eth[x] ETHTOOL_OPTS="-G rx 512"