Problemas de conexión de depuración

Introducción

Generalmente, los problemas de conexión se clasifican en una de las siguientes tres áreas:

  • Conectando: ¿puede acceder a su instancia a través de la red?
  • Autorización: ¿está autorizado para conectarse a la instancia?
  • Autenticación: ¿La base de datos acepta sus credenciales de base de datos?

Cada uno de ellos puede desglosarse en diferentes vías de investigación. La siguiente sección incluye ejemplos de preguntas que puede plantearse para acotar aún más el problema:

Lista de verificación de problemas de conexión

Mensajes de error

Para conocer mensajes de error de API específicos, consulte la página de referencia de mensajes de error .

Solución de problemas de conectividad adicionales

Para otros problemas, consulte la sección Conectividad en la página de solución de problemas.

Problemas de conexión comunes

Verifique que su aplicación esté cerrando las conexiones correctamente

Si ve errores que contienen " Aborted connection nnnn to db: ", generalmente indica que su aplicación no está deteniendo las conexiones correctamente. Los problemas de red también pueden causar este error. El error no significa que haya problemas con su instancia de Cloud SQL. También le recomendamos ejecutar tcpdump para inspeccionar los paquetes y localizar el origen del problema.

Para obtener ejemplos de prácticas recomendadas para la administración de conexiones, consulte Administrar conexiones de base de datos .

Verifique que sus certificados no hayan expirado

Si su instancia está configurada para usar SSL, vaya a la página Instancias de Cloud SQL en el Google Cloud Abra la consola y la instancia. Abra la página Conexiones , seleccione la pestaña Seguridad y asegúrese de que el certificado de su servidor sea válido. Si ha caducado, debe agregar un nuevo certificado y rotarlo.

Verifique que esté autorizado para conectarse

Si sus conexiones fallan, verifique que esté autorizado para conectarse:

  • Si tiene problemas para conectarse usando una dirección IP, por ejemplo, si se conecta desde su entorno local con el cliente sqlcmd, asegúrese de que la dirección IP desde la que se conecta esté autorizada para conectarse a la instancia de Cloud SQL.

    Las conexiones a una instancia de Cloud SQL mediante una dirección IP privada se autorizan automáticamente para los rangos de direcciones RFC 1918. De esta forma, todos los clientes privados pueden acceder a la base de datos sin pasar por el proxy de autenticación de Cloud SQL. Los rangos de direcciones que no cumplen con el RFC 1918 deben configurarse como redes autorizadas .

    De forma predeterminada, Cloud SQL no aprende rutas de subred no RFC 1918 de su VPC. Debe actualizar el emparejamiento de red con Cloud SQL para exportar cualquier ruta no RFC 1918. Por ejemplo:

    gcloud compute networks peerings update cloudsql-mysql-googleapis-com \
    --network=NETWORK \
    --export-subnet-routes-with-public-ip \
    --project=PROJECT_ID
  • Aquí está tu dirección IP actual .

Determinar cómo se inician las conexiones

Puede ver información sobre sus conexiones actuales conectándose a su base de datos y ejecutando el siguiente comando:

sp_who
go

Las conexiones que muestran una dirección IP, como 1.2.3.4 , se conectan mediante IP. Las conexiones con cloudsqlproxy~1.2.3.4 utilizan el proxy de autenticación de Cloud SQL o se originaron en App Engine. Algunos procesos internos de Cloud SQL pueden usar conexiones desde localhost .

Límites de conexión

No hay límites de QPS para las instancias de Cloud SQL. Sin embargo, existen límites específicos de conexión, tamaño y App Engine. Consulta "Cuotas y límites" .

Las conexiones a bases de datos consumen recursos del servidor y de la aplicación que se conecta. Utilice siempre buenas prácticas de gestión de conexiones para minimizar el impacto de su aplicación y reducir la probabilidad de superar los límites de conexión de Cloud SQL. Para obtener más información, consulte Administrar conexiones a bases de datos .

Mostrar conexiones e hilos

Para ver los procesos que se están ejecutando en su base de datos, conéctese a su base de datos y ejecute el siguiente comando:
sp_who
go

Para obtener información sobre cómo interpretar las columnas devueltas por sp_who , consulte la referencia de SQL Server .

Tiempo de espera de las conexiones (de Compute Engine)

Las conexiones con una instancia de Compute Engine agotan el tiempo de espera tras 10 minutos de inactividad, lo que puede afectar a las conexiones de larga duración sin usar entre la instancia de Compute Engine y la de Cloud SQL. Para obtener más información, consulte "Redes y firewalls" en la documentación de Compute Engine.

Para mantener activas las conexiones no utilizadas de larga duración, puede configurar el valor de keepalive de TCP . Los siguientes comandos establecen el valor de keepalive de TCP en un minuto y hacen que la configuración sea permanente tras los reinicios de la instancia.

Muestra el valor actual de tcp_keepalive_time.

cat /proc/sys/net/ipv4/tcp_keepalive_time

Establezca tcp_keepalive_time en 60 segundos y hágalo permanente en todos los reinicios.

echo 'net.ipv4.tcp_keepalive_time = 60' | sudo tee -a /etc/sysctl.conf

Aplicar el cambio.

sudo /sbin/sysctl --load=/etc/sysctl.conf

Muestra el valor tcp_keepalive_time para verificar que se aplicó el cambio.

cat /proc/sys/net/ipv4/tcp_keepalive_time

Herramientas para depurar la conectividad

volcado de tcp

tcpdump es una herramienta para capturar paquetes. Se recomienda encarecidamente ejecutar tcpdump para capturar e inspeccionar los paquetes entre el host y las instancias de Cloud SQL al depurar problemas de conectividad.

Localice su dirección IP local

Si desconoce la dirección local de su host, ejecute el comando ip -br address show . En Linux, este comando muestra la interfaz de red, su estado, la IP local y las direcciones MAC. Por ejemplo: eth0 UP 10.128.0.7/32 fe80::4001:aff:fe80:7/64 .

Alternativamente, puede ejecutar ipconfig o ifconfig para ver el estado de sus interfaces de red.

Prueba con prueba de conectividad

La Prueba de Conectividad es una herramienta de diagnóstico que permite comprobar la conectividad entre los puntos finales de la red. Analiza la configuración y, en algunos casos, realiza una verificación en tiempo de ejecución. Ahora es compatible con Cloud SQL . Siga estas instrucciones para ejecutar pruebas con sus instancias de Cloud SQL.

Pruebe su conexión

Puede usar el cliente sqlcmd para probar su conexión desde su entorno local. Para obtener más información, consulte Conectar el cliente sqlcmd mediante direcciones IP y Conectar el cliente sqlcmd mediante el proxy de autenticación de Cloud SQL .

Determine la dirección IP de su aplicación

Para determinar la dirección IP de una computadora que ejecuta su aplicación para poder autorizar el acceso a su instancia de Cloud SQL desde esa dirección, utilice una de las siguientes opciones:

  • Si la computadora no está detrás de un proxy o firewall, inicie sesión en la computadora y utilice el sitio ¿Cuál es mi IP? para determinar su dirección IP.
  • Si la computadora está detrás de un proxy o firewall, inicie sesión en la computadora y use una herramienta o servicio como whatismyipaddress.com para determinar su verdadera dirección IP.

Abrir puertos locales

Para verificar que su host esté escuchando en los puertos que cree, ejecute el comando ss -tunlp4 . Esto le indicará qué puertos están abiertos y escuchando.

Toda la actividad portuaria local

Utilice el comando netstat para ver toda la actividad del puerto local. Por ejemplo, netstat -lt muestra todos los puertos activos actualmente.

Conéctese a su instancia de Cloud SQL mediante telnet

Para verificar que puede conectarse a su instancia de Cloud SQL mediante TCP , ejecute el comando telnet . Telnet intenta conectarse a la dirección IP y el puerto que le proporcione.

Si tiene éxito, verá lo siguiente: Intentando 35.193.198.159...

Conectado a 35.193.198.159. .

En caso de falla, verá que telnet se bloquea hasta que fuerce el cierre del intento: Intentando 35.193.198.159...

^C. .

Registro en la nube

Cloud SQL y Cloud SQL utilizan Cloud Logging. Consulte la documentación de Cloud Logging para obtener información completa y revisar las consultas de ejemplo de Cloud SQL .

Ver registros

Puede ver los registros de las instancias de Cloud SQL y otros Google CloudProyectos como Cloud VPN o instancias de Compute Engine. Para ver los registros de las entradas de registro de su instancia de Cloud SQL:

Consola

  1. En el Google Cloud consola, vaya a la página de Registro en la nube .

    Ir al registro en la nube

  2. Seleccione un proyecto de Cloud SQL existente en la parte superior de la página.
  3. En el generador de consultas, agregue lo siguiente:
    • Recurso: Seleccione la base de datos de Cloud SQL . En el cuadro de diálogo, seleccione una instancia de Cloud SQL.
    • Nombres de registro: Desplácese hasta la sección Cloud SQL y seleccione los archivos de registro adecuados para su instancia. Por ejemplo:
      • Gravedad: seleccione un nivel de registro.
      • Rango de tiempo: seleccione un ajuste preestablecido o cree un rango personalizado.

    nube g

    Use el comando gcloud logging para ver las entradas del registro. En el siguiente ejemplo, reemplace PROJECT_ID . El indicador limit es un parámetro opcional que indica el número máximo de entradas que se devolverán.

    Direcciones IP privadas

    Las conexiones a una instancia de Cloud SQL que usan una dirección IP privada se autorizan automáticamente para los rangos de direcciones RFC 1918. Los rangos de direcciones no RFC 1918 deben configurarse en Cloud SQL como redes autorizadas . También debe actualizar el emparejamiento de red con Cloud SQL para exportar cualquier ruta no RFC 1918. Por ejemplo:

    gcloud compute networks peerings update cloudsql-sqlserver-googleapis-com 
    --network=NETWORK
    --export-subnet-routes-with-public-ip
    --project=PROJECT_ID

    Solución de problemas de VPN

    Consulte la página de solución de problemas de VPN en la nube .