Red de conocimiento informático - Conocimiento informático - Cómo resolver el problema de conexión lenta a la base de datos MySQL en LAN_MySQL

Cómo resolver el problema de conexión lenta a la base de datos MySQL en LAN_MySQL

Al conectarse al servicio mysql de otra máquina a través de la intranet, ¡se descubre que la velocidad es lenta! Esperó unas decenas de segundos antes de que se le solicitara que ingresara la contraseña. ¡Pero hacer ping al servidor donde se encuentra mysql es muy rápido! Pensando en una experiencia similar hace mucho tiempo, algunos servicios como telnet realizarán una resolución inversa de nombres de dominio al realizar solicitudes de conexión (si la resolución inversa no es fluida, probablemente se retrasará mucho, dando la impresión de que la velocidad de conexión es N lento!)

Busqué soluciones en Internet y encontré dos tipos:

1. El resolve.conf configurado en ambas máquinas es diferente. Configure el resolve.conf para que sea. más rápido. DNS está bien

2. Desactive la resolución inversa de DNS en la configuración de mysql, y está bien

Utilicé el primer método después de modificar la configuración de resolve.conf. velocidad ¡Está subiendo!

Adjunto 1: Extraído de /logs/31907502.html

Dos máquinas en el mismo segmento de red están conectadas al mismo servidor de base de datos. La velocidad de una es 100 veces mayor que la de la otra. other, el host de la base de datos está representado por el nombre de dominio. ¿No puedo entenderlo?

Más tarde, revisé el /etc/resolv.conf de las dos máquinas y descubrí que las configuraciones eran diferentes. , así que lo cambié a la configuración de la máquina más rápida. La velocidad aumentará después de eso.

La resolución de nombres de dominio también puede hacer que los programas de red sean lentos, lo cual es otra ventaja. Además, mysql también tiene. el problema de la resolución inversa de DNS, que también puede causar una velocidad lenta. Puede configurarlo en mysql. En el archivo, desactive la resolución inversa de DNS

Apéndice 2: Extraído de

Cuándo. al acceder a mysql de forma remota, mysql resolverá el nombre de dominio, lo que hará que la velocidad de acceso sea muy lenta, además de lo siguiente: Esta configuración puede resolver este problema

# Deshabilitar mysql para que no resuelva el nombre de dominio

[mysqld]

skip-name-resolve

PHP remoto La conexión a MYSQL es lenta A veces tarda entre 4 y 20 segundos conectarse a MYSQL de forma remota. a MYSQL es normal La razón principal de este problema es que el MYSQL instalado de forma predeterminada tiene habilitada la resolución inversa de DNS. En el archivo MY.INI (sistema WINDOWS) o MY.CNF (en el sistema UNIX o LINUX), agregue la oración skip. -name-resolve en [mysqld].

Sin embargo, esto causará un problema: al conectarse a mysql, no puede usar localhost para conectarse, pero si otorga permisos al usuario según localhost, los permisos de inicio de sesión del usuario también deben; ser modificado.

Solución para conexión lenta a mysql.

Dos servidores, uno ejecutando iis php, otro ejecutando mysql, configura el entorno como antes, prueba la página y todo está OK

p>

Al ejecutar la aplicación, descubrí que la velocidad de PHP para acceder a MySQL era muy lenta. Esta situación nunca antes se había encontrado. Aunque los dos servidores no están en el mismo segmento de red, los valores de ping. Básicamente están entre 1 y 2 ms, la conexión tcp no debería ser la clave del problema. Encontraré la respuesta después de buscar en Google: skip-name-resolve en la sección [mysqld] del archivo my.ini. el archivo, reinicie mysql, todo está bien y la velocidad es tan rápida como volar

La configuración de la nueva versión de mysql no es tan estúpida como la anterior. Este problema me molestó toda la mañana y. Finalmente lo resolví cuando regresé por la noche. Oye, aprendí algo nuevamente.

Servidor MySQL 5 en Windows 2003, esta máquina se conecta al servicio MySQL muy rápidamente. Hay dos máquinas Linux en la LAN. Una se conecta muy rápidamente y la otra tiene que esperar varios segundos después de ingresar a la red. contraseña.

Solución:

Después de agregar la siguiente configuración a la configuración del servidor MySQL, la velocidad será muy rápida.

[mysqld]

skip-name-resolve

Apéndice: (Cómo MySQL usa DNS)

Cuando un nuevo hilo se conecta a mysqld, mysqld generará un nuevo hilo para manejar la solicitud. Este hilo primero verificará si el nombre de host está en la caché de nombres de host. De lo contrario, el hilo llamará a gethostbyaddr_r() y gethostbyname_r() para resolver el nombre de host.

Si el sistema operativo no admite las llamadas seguras para subprocesos anteriores, el subproceso bloqueará un mutex y llamará a gethostbyaddr() y gethostbyname() en su lugar. Tenga en cuenta que en este caso ningún otro subproceso puede resolver otros nombres de host que no estén en. el caché del nombre de host hasta que el primer hilo esté listo.

Puede deshabilitar la búsqueda de host DNS iniciando mysqld con --skip-name-resolve. Sin embargo, en este caso solo puede usar nombres de IP en las tablas de privilegios de MySQL. .

Si tiene un DNS muy lento y muchos hosts, puede obtener más rendimiento ya sea deshabilitando la búsqueda de DNS con --skip-name-resolve o aumentando la definición de HOST_CACHE_SIZE (predeterminado: 128) y recompilando mysqld.

Puede deshabilitar el caché del nombre de host con --skip-host-cache. Puede borrar el caché del nombre de host con FLUSH HOSTS o mysqladmin Flush-hosts.

Si no lo hace. Si no desea permitir conexiones a través de TCP/IP, puede hacerlo iniciando mysqld con --skip-networking.

La conexión remota de PHP a MYSQL es lenta y, a veces, tarda entre 4 y 20 segundos en conectarse. MYSQL de forma remota, la conexión local a MYSQL es normal. La razón principal de este problema es que el MYSQL instalado por defecto tiene habilitada la resolución inversa de DNS en MY.INI (en el sistema WINDOWS) o MY.CNF (en el sistema UNIX o LINUX). )

Agregue la oración skip-name-resolve en [mysqld] del archivo en el sistema.

Soluciones a la baja velocidad de la conexión remota MYSQL

Al conectarme a MYSQL en otras máquinas en la LAN, encontré que la velocidad era muy lenta, no sé por qué. pero siempre había un retraso de varios segundos.

Más tarde encontré una solución en línea y la agregué a my.ini

[mysqld]

skip-name -resolve

skip-grant -tables

¡Esto es más rápido!

La opción skip-name-resolve

puede desactivar la resolución DNS y la velocidad de conexión será mucho más rápida. Sin embargo, en este caso, el nombre de host no se puede usar en la tabla de autorización de MySQL y solo se puede usar el formato ip.

Si usa _skip-grant-tables, el sistema no realizará ningún control de acceso en el acceso de ningún usuario, pero puede usar mysqladmin flux-privileges o mysqladmin reload para habilitar el control de acceso; declaración de bases de datos Abierto a todos los usuarios Si el servidor mysql no tiene una cuenta remota, agregue skip-grant-tables en my.ini