Paramètres TCP Keepalive recommandés pour un server occupé

Nous avons des problèmes de timeout d'attente réseau sur un server Debian qui est assez occupé et maintient plusieurs connections à un certain nombre d'autres servers sur le réseau.

Voici nos parameters TCP keepalive actuels dans sysctl.conf:

net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=90 net.ipv4.tcp_keepalive_probes=3 

Peut-être y a-t-il un problème avec ceux-ci.

Quels sont les parameters de maintenance recommandés pour un server occupé?

Quel type de timeout d'attente réseau avez-vous? TCP keep alive ne sera pas utile si le server est occupé pour répondre à time. Cela aidera seulement à détecter lorsque la connection TCP n'est plus en vie car le pair s'est écrasé ou un filter de packages entre les états fermés en raison de l'inactivité de la connection.

donc tcp keepalive est différent alors quelque chose comme nginx / apache keepalive.

tcp keepalive maintient la connection ouverte au cas où une erreur s'est produite. Comme le client n'a pas reçu la request afin de pouvoir l'essayer à nouveau sur la même connection. Maintenant, cela arrive rarement et la règle générale est que vous souhaitez conserver un niveau élevé de maintenance sur un server NAT afin de ne pas perdre le mappage du server client vers le server NATed derrière celui-ci. Nous exécutons des servers d'annonces qui apportent des millions de personnes quelque part autour de 40 millions de connections par jour par server et notre style Keepalive ressemble

 "net.ipv4.tcp_keepalive_intvl" => 2, "net.ipv4.tcp_keepalive_probes" => 3, "net.ipv4.tcp_keepalive_time" => 5, 

Je ressens encore 5 secondes pour que le time de conservation soit trop élevé et count tenu de la nature de notre entreprise, si nous ne renvoyons pas une annonce dans 50 ms, puis le client expiré. Donc je vais probablement déposer cela à 1. Je viens d'abaisser cette valeur lentement, de sorte que je ne cause pas de problème majeur. Je ne reorderais pas le même, car tous les cas d'utilisation sont différents.

Donc, comme je l'ai dit, c'est très différent, alors nginx / apache keepalive. Ce sont des connections plus persistantes. Il peut donc se connecter une fois et réutiliser cette connection à nouveau. Cela aidera à réduire la latence entre le client et l'hôte.

Les chances sont que si vous n'utilisez pas les ports tcp, modifier votre tcp keepalive ne changera rien à ce que vous voyez avec les timeouts.