Durante un rato, hoy me ha traído de cabeza un problema con un servidor MySQL en el que se estaban encolando todas las conexiones, las cuales no llegaban a conectar y se bloqueaban del siguiente modo:
| 64 | unauthenticated user | 10.0.3.17:37723 | | Connect | | login | | | 65 | unauthenticated user | 10.0.3.6:45973 | | Connect | | login | | | 66 | unauthenticated user | 10.0.3.6:45974 | | Connect | | login | | | 67 | unauthenticated user | 10.0.3.6:45975 | | Connect | | login | | | 68 | unauthenticated user | 10.0.3.6:45976 | | Connect | | login | | | 69 | unauthenticated user | 10.0.3.6:45977 | | Connect | | login | | | 70 | unauthenticated user | 10.0.3.6:45978 | | Connect | | login | | | 71 | unauthenticated user | 10.0.3.6:45979 | | Connect | | login | | | 72 | unauthenticated user | 10.0.3.6:45980 | | Connect | | login | | | 73 | unauthenticated user | 10.0.3.6:45981 | | Connect | | login | |
En el momento que he verificado que el problema surgía únicamente con las conexiones remotas he comenzado a revisar las distintas posibilidades, entre las que se encontraba por ejemplo revisar que los usuarios MySQL estuvieran correctamente configurados, que no hubiera problemas en las bases de datos, etc. Pero realmente el problema surgía mucho antes, en el momento en el que se establecía la conexión, antes de siquiera pedir credenciales.
En este caso el problema radicaba en que los servidores DNS configurados para la máquina (en /etc/resolv.conf) no funcionaban correctamente e impedían a MySQL resolver los hosts remotos que intentaban conectar. MySQL siempre que recibe una conexión remota vía IP intenta revisar a que nombre resuelve para posteriormente hacer el paso contrario y verificar/comparar que el host también resuelve a dicha IP original. El servidor no pasaba de aquí y generaba el cuello de botella.
Si queremos evitar que esto suceda una de dos, o nos aseguramos que los servidores DNS resuelven rápida y correctamente o deshabilitamos la resolución de nombres con –skip-name-resolve, en este caso únicamente podremos usar IPs y no hosts en la tabla de privilegios.
Hola muchas gracias por el post. yo tengo un applet que se conecta a mysql pero todo lo tengo montado en un xampp. (windows). cuando realizo mis consultas me doy cuneta que se me demora como 17 segundos haciendo la conexion. y despues el proceso que realiza es de una. el problema esta en la conexion.
finamente esto queda en un linux y gracias por la soucion, pero por ahora para mostrar en mi portatil tengo el problema sabes como puedo hacer eso en windows.
¿Cambiando los DNS como dice en el artículo? En Windows es increíblemente sencillo…