¿Podrían demasiadas conexiones inactivas afectar el rendimiento de PostgreSQL 9.2?

8

Algunas consultas en mi servidor de base de datos parecen tardar mucho tiempo en responder, y creo que el uso de la CPU es alto. Cuando se ejecuta ps aux, veo ~ 250 conexiones "inactivas" (que creo que son demasiadas). No he comenzado a hacer un diagnóstico completo, pero quería saber si este es un buen lugar para comenzar a buscar.

También estoy usando PgBouncer con la agrupación a nivel de transacción. Sospecho que puedo reducir fácilmente el número de idleconexiones ajustando el tamaño del grupo. Sin embargo, no quiero comenzar a hacer demasiados cambios a menos que haya una buena razón para hacerlo.

¿Pueden muchas idleconexiones en PostgreSQL 9.2 afectar el rendimiento?

¡Muchas gracias!

Juan Carlos Coto
fuente
¿Qué significa "demasiadas conexiones inactivas"? docenas cientos?
jap1968
Pregunta editada Gracias por señalar esto. Solo para que quede claro, el último recuento fue ~ 250
Juan Carlos Coto
¿Tal vez? Sé que el DBA de Oracle aquí ha pedido a las personas que configuren sus herramientas de desarrollo para usar una sola sesión para todas las ventanas (en lugar de una nueva sesión para cada ventana) cuando la base de datos de desarrollo comenzó a funcionar muy lentamente. El número exacto que cuenta como "demasiados" probablemente dependerá de los recursos disponibles para su base de datos.
FrustratedWithFormsDesigner

Respuestas:

3

Dudo seriamente que las conexiones inactivas sean tu problema. PostgreSQL es muy capaz de manejar sesiones inactivas ya que casi no requieren recursos. Las sesiones activas, por otro lado, son mucho más probables la causa de la lentitud.

Consulte https://wiki.postgresql.org/wiki/Number_Of_Database_Connections para obtener una referencia sobre el número de conexiones de la base de datos.

Max Vernon
fuente
¡Las sesiones inactivas con transacciones no comprometidas a menudo son culpables traviesas!
Philᵀᴹ
Estoy de acuerdo, Phil, aunque eso no se trata de PostgreSQL, sino más bien de cómo se escribe el final del cliente (a menos que me falte algo).
Max Vernon
Por favor, vea una pregunta relacionada sobre esto . Realmente ayudaría si lo ayudaras. ¡Gracias!
Juan Carlos Coto
En realidad, las conexiones inactivas tienen mucha sobrecarga (de memoria) y deben evitarse (creo que asigna alrededor de 10 MB por conexión, por lo que en su caso estaría desperdiciando al menos 2.5 GB de memoria)
Kedare
1
@MaxVernon: en mi servidor postgresql 9.5 en ejecución, tengo 25 procesos inactivos, para la columna RES, ea. el proceso es en promedio de unos 12 MB (rango: 4.5 MB - 584 MB, sospecho que los más grandes tienen TX no comprometido).
Cerd