Descripción general de la agrupación de conexiones administrada

El grupo de conexiones administrado te permite escalar tus cargas de trabajo optimizando el uso de recursos y la latencia de conexión para tus instancias de Cloud SQL. PostgreSQL crea un proceso nuevo para cada conexión, lo que genera una sobrecarga en el uso de memoria y la configuración de la conexión. En las arquitecturas que establecen con frecuencia muchas conexiones de corta duración, como los microservicios o las aplicaciones sin servidores que se ejecutan en Cloud Run, esta sobrecarga puede afectar el rendimiento y la escalabilidad de la base de datos.

Con la agrupación de conexiones administrada habilitada, los clientes se conectan a un clúster de grupo de conexiones intermediario en lugar de conectarse directamente al servidor de la base de datos. Esta asignación dinámica proporciona mejoras en el rendimiento, en especial para las conexiones escaladas, ya que absorbe los picos repentinos de conexión y reutiliza las conexiones de bases de datos existentes.

Agrupadores y grupos de conexiones

Cuando las aplicaciones cliente se conectan a una instancia con el grupo de conexiones administrado habilitado, se conectan a un clúster de grupo de conexiones intermediario en lugar de conectarse directamente al servidor de la base de datos. El clúster de grupos de conexiones consta de uno o más agrupadores de conexiones. Un agrupador de conexiones es un servicio de proxy de base de datos que administra y enruta las conexiones de bases de datos entre las aplicaciones cliente y el servidor de bases de datos.

Un agrupador de conexiones mantiene grupos de conexiones como un conjunto de conexiones abiertas y reutilizables del servidor de bases de datos por cada par de bases de datos y usuarios.

Cuando una aplicación cliente autenticada se conecta a una base de datos como un usuario específico, el agrupador de conexiones enruta la solicitud al grupo de conexiones correspondiente:

  • Si hay una conexión de servidor inactiva disponible en el grupo, el agrupador de conexiones la asigna a la solicitud del cliente.
  • Si no hay disponible una conexión de servidor inactiva y no se alcanzó el límite del grupo (max_pool_size), el agrupador de conexiones crea una nueva conexión de servidor en el grupo.
  • Si todas las conexiones del servidor en el grupo están en uso y se alcanzó el límite del grupo, el cliente pasa a un estado de espera hasta que haya una conexión del servidor disponible.
  • Cuando finaliza la solicitud, la conexión del servidor vuelve al grupo de conexiones para su reutilización.

Relación entre los poolers y los grupos

Un solo agrupador de conexiones puede administrar varios grupos de conexiones de forma simultánea, con un grupo para cada par único de base de datos y usuario de base de datos que se conecta a través de ese agrupador.

Si tu instancia ejecuta varios administradores de grupos de conexiones, cada uno de ellos mantendrá de forma independiente su propio conjunto de grupos de conexiones para los pares de bases de datos y usuarios que se enrutan a él.

El rendimiento y las capacidades de escalamiento de la agrupación de conexiones administrada operan en varios niveles:

  • Ajuste de escala del clúster de agrupamiento de conexiones: La cantidad de agrupadores de conexiones en el clúster se ajusta automáticamente según la cantidad de núcleos de CPU virtuales aprovisionados para la instancia (dividiendo el recuento de CPU virtuales por 4, con un mínimo de 1 agrupador de conexiones). Esto garantiza que la agrupación de conexiones no se convierta en un cuello de botella. Las conexiones de clientes entrantes se distribuyen entre los agrupadores de conexiones disponibles. Por ejemplo:

    • Una instancia con 2 o 4 vCPUs ejecuta 1 agrupador de conexiones.
    • Una instancia con 8 CPU virtuales ejecuta 2 administradores de conexiones.
    • Una instancia con 16 CPU virtuales ejecuta 4 administradores de conexiones.
    • Una instancia con 32 CPU virtuales ejecuta 8 administradores de conexiones.
    • Una instancia con 64 CPU virtuales ejecuta 16 administradores de conexiones.
  • Agrupación y escalamiento de agrupaciones: Debido a que los agrupadores de conexiones operan de forma independiente, todas las opciones de configuración se aplican por agrupador de conexiones en lugar de a nivel global en toda la instancia. Las conexiones del servidor se crean a pedido hasta un límite máximo definido por max_pool_size para cada grupo administrado en cada agrupador de conexiones. Por ejemplo, si max_pool_size se establece en 50 en una instancia que ejecuta 2 administradores de grupos de conexiones (8 vCPUs), cada administrador de grupos de conexiones puede abrir hasta 50 conexiones de servidor para un par específico de base de datos y usuario, lo que permite un total de hasta 100 conexiones de servidor en la instancia para ese grupo. El tamaño preciso del grupo es fundamental para el rendimiento: establecer este valor demasiado bajo puede generar tiempos de espera de conexión más largos, mientras que establecerlo demasiado alto puede desperdiciar recursos del servidor de la base de datos.

  • Configuraciones de conexión del cliente: Los límites de conexión del cliente y el comportamiento de tiempo de espera también se configuran por agrupador de conexiones. Entre los parámetros clave, se incluyen los siguientes:

    • max_client_connections: Limita la cantidad máxima de conexiones de cliente permitidas por cada agrupador de conexiones (el valor predeterminado es de 5,000 conexiones por cada agrupador de conexiones).
    • client_connection_idle_timeout: Controla la duración que una conexión de cliente puede permanecer inactiva antes de que se agote el tiempo de espera.
    • query_wait_timeout: Controla la duración que espera una consulta para que haya una conexión de servidor disponible en el grupo antes de que se agote el tiempo de espera.

Casos de uso y consideraciones

Ten en cuenta lo siguiente cuando uses la agrupación de conexiones administrada:

  • Si bien puedes usar la agrupación de conexiones administradas para cualquier carga de trabajo transaccional, proporciona el mayor beneficio de capacidad de procesamiento y latencia a las aplicaciones que contienen conexiones de corta duración o que generan un aumento repentino de conexiones.
  • En el caso de las conexiones de larga duración, el rendimiento de la conexión con la reducción de conexiones administradas puede ser ligeramente inferior al que se obtiene con una conexión directa. En este caso, la agrupación de conexiones administrada proporciona un ajuste de escala de las conexiones cuando la cantidad de conexiones es muy alta. Sin embargo, para las aplicaciones que suelen establecer conexiones de larga duración, es posible que desees evitar el uso de grupos de conexiones.
  • Puedes usar Identity and Access Management para proteger las conexiones a tu instancia según el puerto que usa el grupo de conexiones administrado. Para obtener más información sobre cómo funciona IAM en Cloud SQL y sus limitaciones, consulta Autenticación de IAM.

Para obtener más información sobre cómo habilitar la reducción de conexiones administradas, consulta Configura la reducción de conexiones administradas.

Requisitos

Para usar la agrupación de conexiones administrada, tu instancia debe cumplir con los siguientes requisitos:

  • Tu instancia debe ser de la edición Cloud SQL Enterprise Plus.
  • Debes conectarte a tu instancia solo con una conexión directa o el proxy de autenticación de Cloud SQL.
  • Tu instancia debe estar configurada para el acceso privado a servicios, usar una IP pública o ser una instancia nueva con Private Service Connect habilitado.
  • Tu instancia debe usar la nueva arquitectura de red de Cloud SQL.
  • La agrupación de conexiones administrada requiere un número de versión de mantenimiento mínimo de POSTGRES_$version.R20250727.00_14. Para obtener más información sobre cómo realizar el mantenimiento de autoservicio, consulta Cómo realizar el mantenimiento de autoservicio.

Opciones de agrupación

La agrupación de conexiones administrada te permite administrar cómo se agrupan las conexiones con el parámetro pool_mode. Puedes usar las siguientes opciones de agrupación:

  • transaction (predeterminado): Agrupa las conexiones a nivel de la transacción. Las conexiones se devuelven al grupo después de que se completa cada transacción. Cloud SQL recomienda usar el modo de agrupación transaction para las conexiones de corta duración.
  • session: Agrupa las conexiones a nivel de la sesión. Cada sesión usa una conexión de servidor dedicada que mantiene un estado de sesión. Esto reduce la eficiencia del pooling. Cuando un cliente se desconecta, la conexión del servidor vuelve al grupo de conexiones.

Opciones de configuración avanzada

Puedes personalizar la agrupación de conexiones administradas con las siguientes opciones de configuración.

Nombre de la configuración Descripción
max_pool_size Es la cantidad máxima de conexiones de servidor permitidas para un par de base de datos y usuario en cada grupo de conexiones. Esta configuración se aplica por agrupador de conexiones. Determina este valor según los requisitos de tamaño de la instancia y del grupo.

El valor predeterminado es 50 conexiones por par de base de datos y usuario para cada agrupador de conexiones.
min_pool_size Es la cantidad mínima de conexiones de servidor disponibles en cualquier momento en cada grupo de conexiones. Esta configuración se aplica por agrupador de conexiones. Determina este valor según los requisitos de tamaño de la instancia y del grupo.

Si la cantidad de conexiones de servidor es menor que min_pool_size, este parámetro de configuración agrega más conexiones de servidor al grupo. Esto ayuda a administrar los aumentos repentinos en la carga de la base de datos después de períodos de inactividad y garantiza que las conexiones estén disponibles y listas para usarse.

El valor predeterminado es 0 conexiones.
max_client_connections Cantidad máxima de conexiones de cliente permitidas por el agrupador de conexiones cuando se usa la agrupación de conexiones administrada. Determina este valor según los requisitos de tamaño de la instancia y del grupo.

El valor predeterminado es 5,000 conexiones para cada agrupador de conexiones.
max_prepared_statements Es la cantidad máxima de sentencias preparadas con nombre a nivel del protocolo que admite cada agrupador de conexiones en el modo de agrupación transaction. Determina este valor según los requisitos de tamaño de la instancia y del grupo.

Si configuras esta opción como 0, se inhabilita la compatibilidad con sentencias preparadas. Para obtener un rendimiento óptimo, este valor debe superar la cantidad de sentencias preparadas de uso frecuente en tu base de datos. Una gran cantidad de sentencias preparadas en la reducción de conexiones administradas puede provocar un aumento en el uso de memoria.

El valor predeterminado son las instrucciones 0.
client_connection_idle_timeout Es el tiempo que una conexión de cliente permanece inactiva antes de que se agote el tiempo de espera. Este valor puede oscilar entre 0 y 2,147,483 segundos, y el valor predeterminado es 0 segundos.
server_connection_idle_timeout Es el tiempo que una conexión de servidor permanece inactiva antes de que se agote el tiempo de espera. Este valor puede oscilar entre 0 y 2,147,483 segundos, y el valor predeterminado es 600 segundos.
query_wait_timeout Es el tiempo que espera una consulta una conexión de servidor en un grupo antes de que se agote el tiempo de espera.

Si se establece esta opción en 0, se inhabilita, lo que permite una cola de clientes indefinida. Habilitar esta opción evita que los servidores que no responden mantengan las conexiones.

Este valor puede variar entre 0 y 2,147,483 segundos, y el valor predeterminado es 120 segundos.
ignore_startup_parameters Son los parámetros que deseas ignorar y que no se rastrean en los paquetes de inicio de la agrupación de conexiones administradas de forma predeterminada.
server_lifetime Es el tiempo máximo que una conexión de servidor permanece sin usar antes de que el grupo de conexiones administrado la cierre. Si el valor se establece en 0 segundos, la conexión se cierra inmediatamente después de su uso.

El valor predeterminado es 3600 segundos.

Limitaciones

Cuando uses el grupo de conexiones administrado con tus instancias de edición de Cloud SQL Enterprise Plus, ten en cuenta estas limitaciones:

  • Habilitar el grupo de conexiones administrado en una instancia existente provoca el reinicio de la base de datos.
  • El agrupamiento de conexiones administrado solo se puede usar con la versión 2.15.2 y versiones posteriores del proxy de Cloud SQL Auth.
  • Si usas el conector de lenguaje de Go en Cloud SQL, te recomendamos que uses la versión 1.24 de Go como mínimo. Si usas la versión 1.23 de Go o una anterior, es posible que experimentes limitaciones en el rendimiento cuando uses el grupo de conexiones administrado.
  • Si usas el agrupamiento de conexiones administrado en el modo de agrupamiento transaction, no se admiten las siguientes funciones de SQL:

    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW tablas temporales
    • LOAD
    • Bloqueos de asesoramiento a nivel de sesión
  • Si usas la biblioteca de interfaz de base de datos asyncpg para el agrupador de Managed Connection Pooling en los puertos 3307 y 6432, debes actualizar max_prepared_statements a un valor mayor que 0 para habilitar la compatibilidad con las sentencias preparadas en el agrupador de Managed Connection Pooling.

  • Si usas la versión 17 de Cloud SQL para PostgreSQL, la opción sslnegotiation=direct no es compatible.

  • El seguimiento de la IP del cliente no es compatible con la agrupación de conexiones administradas. Si habilitas Almacenar las direcciones IP de clientes en Estadísticas de búsquedas, las direcciones IP de los clientes se mostrarán como local en lugar de la dirección IP en sí.

Puertos que usa la agrupación de conexiones administrada

Cuando habilitas el grupo de conexiones administrado, cambian los puertos que usan las instancias de Cloud SQL para entregar el tráfico de la base de datos. Puedes usar Identity and Access Management para proteger las conexiones, según el puerto.

Los puertos que usa la agrupación de conexiones administrada y sus opciones de IAM disponibles son los siguientes:

Conexiones del servidor que usa la agrupación de conexiones administrada

La configuración de la base de datos max_connections limita la cantidad máxima de conexiones del servidor que puede usar un agrupador en el Agrupamiento de conexiones administrado. Cloud SQL recomienda ajustar este valor según los requisitos de carga de trabajo de tu instancia y el tamaño de la instancia de base de datos. Durante la carga máxima, la cantidad de conexiones para la autenticación puede ser muy alta.

Si usas el valor predeterminado max_pool_size de 50 conexiones por grupo, te recomendamos que reserves al menos 15 conexiones de servidor por CPU para el grupo de conexiones administrado cuando establezcas la marca max_connections para tu base de datos. Para obtener más información sobre la marca max_connections, consulta Cantidad máxima de conexiones simultáneas. Para modificar la marca max_connections de tu instancia, consulta Configura marcas de bases de datos.

¿Qué sigue?