Votre serveur ralentit ?
Vérifiez le nombre de connexions à l’état TIME_WAIT et modifiez la configuration.
Manipulation testée avec succès sur Debian 7 (Wheezy)
Cette commande permet de lister le nombre de connexion suivant leur état :
1 |
command netstat -nat | awk '{if (NR!=1 && NR!=2) print $6}' | sort | uniq -c | sort -n |
Résultat :
1 2 3 |
8 LISTEN 13 ESTABLISHED 2878 TIME_WAIT |
Comme on peut le voir, il y a un peu beaucoup de connexions à l’état TIME_WAIT.
La correction se fait rapidement :
1 2 |
command echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle command echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout |
Ne pas activer tcp_tw_reuse sur un serveur proxy / load balancing.
Sur un serveur web, vous pouvez ajouter cette commande :
1 |
command echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse |
Attendez quelques secondes et relancez la commande netstat.
Maintenant :
1 2 3 |
8 LISTEN 12 TIME_WAIT 13 ESTABLISHED |
Et on gagne en temps de chargement des pages web.
Cette configuration disparait au reboot du serveur.
Exécutez cette commande pour appliquer la configuration à chaque démarrage du serveur :
1 2 |
echo "net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_tw_recycle = 1" > /etc/sysctl.d/tcp-boost-traffic.conf |
Plus d’informations détaillées : « TCP TIME-WAIT & les serveurs Linux à fort trafic – Vincent Bernat«