
Tengo un servidor PostgreSQL 9.4 que parece limitar las conexiones a menos de las que he definido en max_connections.
Tengo max_connections configurado en 300.
SHOW max_connections;
max_connections
-----------------
300
Sin embargo, descubrí que empiezo a agotarse el tiempo de espera de las nuevas conexiones tan pronto como mis conexiones activas llegan a 100, según lo medido porSELECT count(*) from pg_stat_activity;
Mientras ese número sea inferior a 100, las nuevas conexiones funcionan. Una vez que llega a 100, las nuevas conexiones fallan: PG::ConnectionBad: could not connect to server: Connection timed out
(biblioteca de páginas Ruby)
Parece haber una excepción para las conexiones de superusuario (es decir, yo me conecto a través de PgAdmin), ya que de esa manera puedo superar el umbral de 100, aunque las aplicaciones que no usan superusuarios continúan agotando el tiempo de espera.
No sé exactamente cuál puede ser la causa raíz.
Algunas configuraciones:
max_connections = 300
superuser_reserved_connections = 2
shared_buffers = 1024MB
effective_cache_size = 2048MB
work_mem = 8MB
maintenance_work_mem = 256MB
He intentado modificar un poco estos valores, sin ningún resultado útil.
Otros detalles:
- Ubuntu 14.04 de 64 bits
- VPS Linodo de 4GB
- PostgreSQL 9.4.1
- No tuve este problema esencialmente con la misma configuración en PostgreSQL 9.2.
- Las bases de datos se migraron desde Postgres 9.2 a través de pg_dumpall
- El uso de la memoria no parece ser un problema,
free
muestra 2,1 GB libres, 3,5 GB incluidos buffers/caché. - Las conexiones son para muchos roles diferentes a muchas bases de datos diferentes, ninguna base de datos individual tiene más de 5 o 6 conexiones activas y se accede a cada base de datos mediante su propia función separada. No parece estar en conflicto con ningún límite de conexión en bases de datos o roles individuales.
Respuesta1
¿También ha aumentado el tamaño máximo del segmento del kernel?
Intentar:
sysctl -w kernel.shmmax=1258291200
Respuesta2
¿Es posible que haya limitado la conexión máxima de usuario?Privilegios de rol
Puedes cambiar esto con
ALTER ROLE nombre de rol LÍMITE DE CONEXIÓN 300;