Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

274
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!