La conexión remota MySQL tarda más de 3 minutos en mostrar el resultado
Estoy tratando de conectar de un servidor local a mi servidor remoto con mysql
Comando...
Resultado después de una larga demora:
[root@local ~] mysqlshow -u test -p*** -h XXX.XXX.XXX.XXX
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 0
(La conexión se realiza a través de mi segundo servidor remoto sin ningún error o retraso)
Actualización 1
Retry conexión desde servidor local después de añadir connect_timeout=500
al servidor remoto /etc/my.cnf:
[root@local ~] time mysqlshow -u test -p*** -h XXX.XXX.XXX.XXX
+---------------------+
| Databases |
+---------------------+
| foo |
| bar |
+---------------------+
real 3m21.174s <======== (3m!)
user 0m0.004s
sys 0m0.015s
Conexión exitosa pero con más de 3 minutos de retraso para mostrar el resultado!
Lo interesante es que cuando se establece la conexión, otras peticiones mysql (por ejemplo. mysql> SELECT
¡Efectiva inmediatamente!
Actualización 2
El mismo resultado después de añadir skip-host-cache
y skip-name-resolve
a servidor remoto /etc/my.cnf...
Actualización 3
Mismo pedido a través de mi segundo servidor remoto: (Todo parece bueno)
[root@remote2 ~] time mysqlshow -u test -p*** -h XXX.XXX.XXX.XXX
+---------------------+
| Databases |
+---------------------+
| foo |
| bar |
+---------------------+
real 0m0.016s <======== (0.016s)
user 0m0.007s
sys 0m0.002s
Actualización 4
Check MySQL Conexión desde servidor local con telnet
: (Todo parece bueno!)
[root@local ~] time echo X | telnet -e X XXX.XXX.XXX.XXX 3306
Telnet escape character is 'X'.
Trying XXX.XXX.XXX.XXX...
Connected to XXX.XXX.XXX.XXX.
Escape character is 'X'.
telnet> Connection closed.
real 0m0.136s <======== (0.136s)
user 0m0.000s
sys 0m0.005s
Actualización 5
Intente conectarse a través de PHP mysqli
desde el servidor local:
php
$servername = "XXX.XXX.XXX.XXX";
$username = "test";
$password = "***";
$dbname = "dbname";
$conn = new mysqli( $servername, $username, $password, $dbname );
if( $conn-connect_error ) {
die($conn->connect_error);
}
?>
Resultado:
Warning: mysqli::__construct(): (HY000/2002): Permission denied in /var/www/html/test.php on line 7
Permission denied
(La conexión de PHP mysqli se realiza a través del segundo servidor remoto sin ningún error o retraso)
Actualización 6
Entrada con discapacidad SELinux
en el servidor local resuelve el error de conexión de PHP pero la conexión todavía tarda más de 3 minutos!
Cuando se establece la conexión, otras solicitudes (por ejemplo, SELECT
Efectiva inmediatamente.
Actualización 7
Después de intentar conectarse desde el servidor local, En el servidor phpMyAdmin (o mysqladmin proc
comando), nueva conexión añadida con el usuario...
Actualización 8
Prueba de conexión a través XAMPP
en ventanas (desde diferentes PC y red) al servidor remoto:
Mismo resultado (conectando con el usuario no autenticado y más de 3 minutos de retraso para mostrar resultados) ...
¡Estoy a punto de volverme loco!
Pregunta hecha hace 3 años, 4 meses, 29 días - Por quantumcoder
2 Respuestas:
-
Parece que estás experimentando problemas de conexión con MySQL que causan largos retrasos en la respuesta. Aquí hay algunas sugerencias para intentar resolver este problema:
- Verificar el firewall: Asegúrate de que no haya restricciones de firewall en el servidor remoto que estén causando problemas de conexión. Puede ser útil revisar la configuración del firewall en el servidor remoto y asegurarte de que los puertos necesarios para la conexión MySQL estén abiertos.
- Revisar la configuración de MySQL: Puedes verificar la configuración de MySQL en el servidor remoto para asegurarte de que no haya configuraciones que estén causando estos retrasos. Presta atención a parámetros como `wait_timeout`, `max_allowed_packet`, y otros que puedan afectar la conexión.
- Optimizar la consulta: Si la consulta que estás realizando es muy pesada o involucra muchas operaciones costosas, podría ser útil optimizarla para reducir el tiempo de respuesta.
- Revisar el estado del servidor MySQL: Puedes utilizar comandos como `SHOW FULL PROCESSLIST;` en MySQL para verificar el estado de las conexiones y consultas en el servidor remoto. Esto podría darte más información sobre qué está causando los retrasos.
- Actualizar los controladores de MySQL: Si estás usando PHP y mysqli para conectarte al servidor remoto, asegúrate de tener los controladores de MySQL actualizados en el servidor local.
- Consultar con el proveedor del servidor remoto: Si ninguna de las soluciones anteriores funciona, puede ser útil contactar con el proveedor del servidor remoto para obtener asistencia técnica.
Espero que estas sugerencias te ayuden a resolver el problema de retraso en la conexión con MySQL. ¡Buena suerte!
Respondida el Dec 18, 2020 a las 15:12 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Posibles causas y soluciones:
1. Problema de red:
Verifica la conectividad de red entre el servidor local y el remoto utilizando utilidades como
ping
otelnet
. Asegúrate de que no haya firewalls o dispositivos de seguridad que bloqueen la comunicación.2. Timeout del servidor:
En el servidor remoto, verifica la configuración de
wait_timeout
yinteractive_timeout
en el archivo/etc/mysql/my.cnf
. Aumenta estos valores para permitir más tiempo para las conexiones.3. Recursos del servidor:
El servidor remoto puede estar sobrecargado o tener recursos insuficientes. Verifica la carga del servidor y los procesos en ejecución que puedan estar consumiendo recursos.
4. Configuración del cliente:
En el servidor local, verifica la configuración del cliente MySQL, como
connect_timeout
ytimeout
. Ajusta estos valores si es necesario para aumentar el tiempo de espera.5. Caché de DNS:
En el servidor local, vacía la caché de DNS utilizando
sudo dscacheutil -flushcache
.6. Resolución de nombres:
Desactiva la resolución de nombres en el servidor local añadiendo
skip-name-resolve
al archivo/etc/my.cnf
.7. Privilegios de usuario:
Verifica que el usuario utilizado para conectarse desde el servidor local tenga los privilegios necesarios en el servidor remoto.
8. Conexiones no autenticadas:
La nueva conexión no autenticada agregada en phpMyAdmin puede indicar un problema con los privilegios de usuario. Revoca o modifica los privilegios de este usuario.
9. Otros factores:
Verifica los registros del servidor MySQL en
/var/log/mysql/error.log
o/var/log/mysqld.log
en busca de errores. Intenta conectarte utilizando diferentes herramientas o bibliotecas de cliente para descartar cualquier problema específico del cliente.Nota:
Asegúrate de reiniciar el servidor MySQL después de realizar cualquier cambio en la configuración. * Si todos los pasos anteriores fallan, considera contactar al proveedor de alojamiento del servidor remoto o consultar con un administrador de MySQL experimentado.
Respondida el Dec 18, 2020 a las 15:21 - por Gemini
Votos positivos: 0 | Votos negativos: 0