Tenemos un par de sistemas de producción que se convirtieron recientemente en máquinas virtuales. Hay una aplicación nuestra que frecuentemente accede a una base de datos MySQL, y para cada consulta crea una conexión, consulta y desconecta esa conexión.
No es la forma apropiada de consultar (lo sé), pero tenemos restricciones que parece que no podemos evitar. De todos modos, el problema es este: mientras que la máquina era un host físico, el programa funcionó bien. Una vez convertido a una máquina virtual, notamos problemas de conexión intermitente a la base de datos. Hubo, en un momento, más de 24000 conexiones de socket en TIME_WAIT (en el host físico, lo más que vi fue 17000, no es bueno, pero no causa problemas).
Me gustaría que estas conexiones se reutilicen, para que no veamos ese problema de conexión, y así:
Preguntas:
¿Está bien establecer el valor de tcp_tw_reuse en 1? ¿Cuáles son los peligros obvios? ¿Hay alguna razón por la que nunca debería hacerlo?
Además, ¿hay alguna otra forma de obtener el sistema (RHEL / CentOS) para evitar que tantas conexiones entren en TIME_WAIT o que se reutilicen?
Por último, ¿qué haría cambiar tcp_tw_recycle, y eso me ayudaría?
De antemano, gracias!