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

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

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)

Después de buscar soluciones en Internet, encontré dos tipos:

1. El resolve.conf configurado en ambas máquinas es diferente. ser 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. la 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 la ventaja. Problema de resolución inversa de DNS, que también puede causar velocidad lenta. Puede configurarlo en mysql. En el archivo, desactive la resolución inversa de DNS.

Apéndice 2: Extraído de

Al acceder. 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. MYSQL es normal La razón principal de este problema es que el MYSQL instalado de forma predeterminada tiene habilitada la resolución DNS inversa. En el archivo MY.INI (WINDOWS) o MY.CNF (en el sistema UNIX o LINUX), agregue la oración skip-name. -resolver 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.

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. son básicamente 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 igual de rápida

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. Cuando regresé por la noche jeje, aprendí algo otra vez.

Servidor MySQL 5 bajo Windows 2003, esta máquina se conecta al servicio MySQL muy rápidamente. Hay dos máquinas Linux en la LAN. Una de ellas se conecta muy rápidamente y la otra tiene que esperar varios segundos. ingresando la 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 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 de forma predeterminada tiene habilitada la resolución inversa de DNS. En [mysqld], agregue la oración skip-name-resolve.

Más tarde encontré la solución en Internet 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 de IP.

Si usa _skip-grant-tables, el sistema no implementará ningún control de acceso para 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 para Abierto a todos los usuarios Si el servidor MySQL no tiene una cuenta remota, agregue skip-grant-tables en my.ini

El método anterior ha resuelto con éxito la conexión lenta de la base de datos MySQL en. La LAN. Los amigos que lo necesiten pueden consultarlo.

Artículos que te pueden interesar: Análisis y soluciones a las causas de la consulta lenta del servidor MySQL, resumen del problema de la velocidad lenta de MYSQL, registro de declaraciones de la base de datos, precauciones de conexión remota a la base de datos MySQL (conexión remota lenta , skip-name-resolve) de acuerdo con el registro lento de mysql monitorea la eficiencia de ejecución de declaraciones SQL mysql activa la consulta lenta cómo activar el registro de consulta lenta de mysql registro sobre la solución a la velocidad lenta de mysql innodb count(*) Búsqueda de consulta lenta de MySQL y prueba de ajuste Conexión PHP a la red de área local Base de datos MYSQL ejemplo simple mysql correcto Compartir el proceso de borrar de forma segura el registro de consultas lentas en línea registro lento