2009-08-18 33 views
18

Uso JDBC para conectarme a MySQL. Cuando está en localhost:3306, todo está bien.¿Por qué la conexión al servidor MySQL es tan lenta?

Pero cuando muevo mi aplicación a otra computadora en la intranet, y uso <Intranet-IP>:3306 para conectarme a la base de datos MySQL, toma aproximadamente 1 minuto conectarse a MySQL con éxito. ¿Qué pasa con esto?

Respuesta

32

Bueno, podría ser un problema de DNS. Puede deshabilitar las búsquedas de nombre de host DNS iniciando mysqld con la opción --skip-name-resolve en el archivo de configuración.

Lea aquí para más detalles: http://dev.mysql.com/doc/refman/5.0/en/host-cache.html

+0

¡Muchas gracias! – MemoryLeak

+0

Tuve este problema y de hecho fue un problema de DNS inversa – acemtp

+12

Para que quede claro, '--skip-name-resolve' se usaría como una opción de línea de comando al iniciar mysql, mientras que' skip-name-resolve' (sin el doble guión al frente) se usaría en el archivo de configuración. – JYelton

1

cortafuegos, Internet, enrutamiento, etc. ralentiza su conexión.

En su lugar, debe poner su base de datos en una intranet. Manténgalo local y detrás de su gran firewall. Por supuesto, puede tener firewall y seguridad entre computadoras. Recomiendo que no exponga su conexión de base de datos mysql a Internet sin filtrar de esa manera.

+0

es una intranet IP! – MemoryLeak

+0

ah, veo que editaste tu pregunta :) es bueno ver que encontraste una respuesta a tu pregunta. – Makach

7

Para mí fue esta solución que encontré aquí, si se habilita la conectividad IP 6, conexión a "localhost" puede ser lento, en lugar de utilizar la dirección IP, 127.0.0.1. Esto funcionó para mí.

my mysql slow to connect problem was solved by this solution

+0

Notó este problema al solucionar problemas de una instalación lenta de MediaWiki. mysql_connect tardaba casi un segundo. Cambió la configuración de localhost a 127.0.0.1 y pasó de 1021 ms a 7 ms. ¡Gracias! – jmgardn2

+0

Gracias! Esto acaba de resolver una pregunta problema que publiqué. ¿Quién sabía que IPv6 se confundiría tanto con las versiones recientes de MySQL? –

11

El --skip-name-resolve funcionó muy bien para mí.

para hacerlo permanente, acabo de añadir esta línea al final del archivo de my.ini en la sección [mysql]:

skip-name-resolve 

y listo! ¡Las transacciones ahora vuelan!

Cuestiones relacionadas