PostgreSQL限制连接less于max_connections?

我有一个PostgreSQL 9.4服务器似乎是限制连接less于我在max_connections中定义的。

我有max_connections设置为300。

SHOW max_connections; max_connections ----------------- 300 

但是,我发现,一旦我的活动连接数达到100,我就开始获取新的连接,按照SELECT count(*) from pg_stat_activity;

只要这个数字低于100,新的连接就可以工作。 一旦达到100,新的连接失败: PG::ConnectionBad: could not connect to server: Connection timed out (Ruby pg库)

超级用户连接似乎是个例外(即通过PgAdmin进行连接),因为我可以超过100个门限,但不使用超级用户的应用程序将继续超时。

我很茫然地找出根本原因可能是什么。

一些configuration设置:

 max_connections = 300 superuser_reserved_connections = 2 shared_buffers = 1024MB effective_cache_size = 2048MB work_mem = 8MB maintenance_work_mem = 256MB 

我已经尝试了一些修改这些值,没有任何效果。

其他详情:

  • Ubuntu 14.04 64位
  • 4GB的Linode VPS
  • PostgreSQL 9.4.1
  • 在PostgreSQL 9.2上没有这个问题。
  • 数据库通过pg_dumpall从Postgres 9.2迁移而来
  • 内存使用似乎没有问题, free显示2.1 GB免费,3.5 GB,包括缓冲区/caching。
  • 连接对于许多不同的数据库来说有许多不同的angular色,没有单独的DB具有超过5或6个活动连接,并且每个DB被它自己独立的angular色访问。 似乎没有违反个人数据库或angular色的任何连接限制。

你有没有提高内核最大段的大小呢?

尝试:

 sysctl -w kernel.shmmax=1258291200 

是否有可能限制了最大用户连接? angular色权限

你可以改变这个

ALTERangular色rolename CONNECTION LIMIT 300;