Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

275
Vistas
¿Qué sucede cuando se agota el grupo de conexiones de Postgresql?

Estoy mirando las conexiones agrupadas de NodeJs a Postgresql. Usaré la clase Pool en la biblioteca pg , junto con async / await .

He leído que Postgresql por defecto tiene un límite de 100 conexiones simultáneas y Pool tiene un valor predeterminado de 10 conexiones agrupadas.

Mi aplicación escalará nuevas instancias a medida que se encuentre bajo una gran carga, por lo que, en teoría, podría terminar con más de 10 instancias, lo que superaría las 100 conexiones máximas de Postgresql.

Lo que me gustaría saber es qué sucederá cuando ejecute await pool.Query(....) en las siguientes circunstancias.

  1. Las 10 conexiones agrupadas están actualmente en uso. ¿Esperará a que una esté disponible o generará una excepción?
  2. Las 100 conexiones al servidor de base de datos están en uso y NodeJS intenta crear una nueva conexión desde un grupo.

Además, ¿cómo puedo escribir un código NodeJS que intente realizar 101 conexiones agrupadas para probar este comportamiento?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Cuando se alcanzan todas las conexiones en un grupo, un nuevo solicitante simplemente bloqueará hasta que alguien más finalice, a menos que se establezca connectionTimeoutMillis, entonces obtendrá un error sintético después del tiempo de espera especificado. esto esta documentado

Cuando se agotan todos los max_connection de PostgreSQL (por varios grupos, por ejemplo), los intentos de obtener una conexión fallarán y volverán al solicitante. Esto no parece estar documentado, y uno podría imaginar que el Pool es más inteligente, por ejemplo, interceptando el error y haciendo que el cliente espere como si se hubiera alcanzado el máximo para ese pool (Pero en ese caso, ¿qué pasaría si fuera el primero? conexión que ese grupo intentó hacer? ¿A qué estaría esperando?), o reintentar la conexión periódicamente para que haya una disponible.

Por lo tanto, le recomendamos que no permita que esto suceda, limitando hasta dónde puede escalar el servidor de aplicaciones o aumentando max_connections en Postgres o reduciendo max en cada grupo.

Cuál de estos tiene sentido depende de las circunstancias. No tiene sentido escalar el servidor de aplicaciones si el cuello de botella está completamente en la base de datos.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda