Abbiamo un paio di sistemi di produzione che sono stati recentemente convertiti in macchine virtuali. Esiste una nostra applicazione che accede frequentemente a un database MySQL e per ogni query crea una connessione, interroga e disconnette tale connessione.
Non è il modo appropriato di interrogare (lo so), ma abbiamo dei vincoli che non possiamo sembrare aggirare. Comunque, il problema è questo: mentre la macchina era un host fisico, il programma funzionava bene. Una volta convertito in una macchina virtuale, abbiamo notato problemi di connessione intermittente al database. C'erano, a un certo punto, oltre 24000 connessioni socket in TIME_WAIT (sull'host fisico, il massimo che ho visto era 17000 - non buono, ma non causa problemi).
Vorrei che queste connessioni venissero riutilizzate, in modo da non vedere quel problema di connessione, e quindi:
Domande:
Va bene impostare il valore di tcp_tw_reuse su 1? Quali sono gli evidenti pericoli? C'è qualche motivo per cui non dovrei mai farlo?
Inoltre, c'è un altro modo per ottenere il sistema (RHEL / CentOS) per impedire a tante connessioni di entrare in TIME_WAIT o farle riutilizzare?
Infine, cosa farebbe cambiando tcp_tw_recycle e mi aiuterebbe?
In anticipo, grazie!