martes, 19 de enero de 2010

Evitar conexiones lentas con MySQL

Recientemente estabamos desarrollando un software en Java, que tiraba de una base de datos MySQL, bajo un servidor de aplicaciones Apache Tomcat.

Resulta que las conexiones a base de datos, iban descaradamente lentas, y se debía a que MySQL no resolvía los DNS, incluso en una red local como la que teníamos en el trabajo. Algunas veces se demoraba entre 2 y 30 segundos en completar las consultas a la base de datos... después de hacer cambios en el equipo servidor, programa, red, equipos cliente el problema continuaba.

El tema es que cuando un usuario se conecta, MySQL además de comprobar el nombre de usuario y la contraseña también comprueba el host, osea, resuelve a través del servicio DNS (ya sea local o remoto) la IP y/o dominio desde donde se realiza la conexión... es aquí donde se produce el problema: si el servicio DNS no responde con la rapidez necesaria (algo muy común) se retrasa el login y todo lo demás (consulta, ejecución o lo que sea que se quiera hacer en el servidor).

Para evitar este problema (la "incompetencia" del servicio DNS) simplemente le decimos a MySQL que NO intente resolver IP y/o dominio, para esto agregamos "skip-name-resolve" al archivo de configuración de MySQL (/etc/mysql/my.cnf) o lanzamos el servicio mysqld con la opción --skip-name-resolve.

Y listo, ya tenemos nuestro MySQL listo.

Ésta información está sacada de "hodavame.blogspot.com".

Os dejo también algunos enlaces interesantes:

0 comentarios:

Publicar un comentario