Nous avons quelques systèmes de production qui ont été récemment convertis en machines virtuelles. Une de nos applications accède fréquemment à une base de données MySQL, et pour chaque requête, elle crée une connexion, interroge et déconnecte cette connexion.
Ce n'est pas la bonne façon d'interroger (je sais), mais nous avons des contraintes que nous n'arrivons pas à contourner. Quoi qu'il en soit, le problème est le suivant : lorsque la machine était un hôte physique, le programme fonctionnait correctement. Une fois converti en machine virtuelle, nous avons remarqué des problèmes intermittents de connexion à la base de données. À un moment donné, il y avait plus de 24 000 connexions de socket dans TIME_WAIT (sur l'hôte physique, le maximum que j'ai vu était de 17 000 - ce qui n'est pas bon, mais ne pose pas de problème).
J'aimerais que ces connexions soient réutilisées, afin d'éviter ce problème de connexion, etc :
Questions :
Est-il possible de fixer la valeur de tcp_tw_reuse à 1 ? Quels sont les dangers évidents ? Y a-t-il une raison pour laquelle je devrais jamais le faire ?
Existe-t-il un autre moyen de faire en sorte que le système (RHEL/CentOS) empêche un si grand nombre de connexions de passer en TIME_WAIT, ou qu'elles soient réutilisées ?
Enfin, que ferait la modification de tcp_tw_recycle, et est-ce que cela m'aiderait ?
D'avance, merci !