Nous avons quelques systèmes de production qui ont été récemment convertis en machines virtuelles. Il existe une de nos applications qui 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 façon appropriée d'interroger (je sais), mais nous avons des contraintes que nous ne pouvons pas sembler contourner. Quoi qu'il en soit, le problème est le suivant: alors que la machine était un hôte physique, le programme s'est bien déroulé. Une fois converti en machine virtuelle, nous avons remarqué des problèmes de connexion intermittents à la base de données. Il y avait, à un moment donné, plus de 24 000 connexions de socket dans TIME_WAIT (sur l'hôte physique, le maximum que j'ai vu était 17 000 - pas bon, mais sans causer de problèmes).
Je voudrais que ces connexions soient réutilisées, afin que nous ne voyions pas ce problème de connexion, et donc:
Des questions:
Est-il correct de définir la valeur de tcp_tw_reuse à 1? Quels sont les dangers évidents? Y a-t-il une raison pour laquelle je ne devrais jamais le faire?
De plus, existe-t-il un autre moyen d'obtenir le système (RHEL / CentOS) pour empêcher autant de connexions d'entrer dans TIME_WAIT ou de les faire réutiliser?
Enfin, que changerait tcp_tw_recycle et cela m'aiderait-il?
D'avance, merci!