PostgreSQL 限制連線數少於 max_connections?

PostgreSQL 限制連線數少於 max_connections?

我有一個 PostgreSQL 9.4 伺服器,它似乎限制連線數少於我在 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 個閾值,儘管不使用超級用戶的應用程式會繼續逾時。

我不知道到底是什麼根本原因。

一些配置設定:

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 易節點 VPS
  • PostgreSQL 9.4.1
  • 在 PostgreSQL 9.2 上使用基本上相同的配置沒有出現此問題。
  • 資料庫是透過 pg_dumpall 從 Postgres 9.2 遷移的
  • 記憶體使用似乎不是問題,free顯示 2.1 GB 可用空間,3.5 GB 包括緩衝區/快取。
  • 連接針對許多不同資料庫的許多不同角色,沒有單一資料庫具有超過 5 或 6 個活動連接,並且每個資料庫都由自己的單獨角色存取。似乎沒有違反單一資料庫或角色的任何連接限制。

答案1

您是否也提高了內核最大段大小?

嘗試:

sysctl -w kernel.shmmax=1258291200

答案2

您是否可能限制了最大用戶連線數?角色權限

你可以改變這個

ALTER ROLE 角色名 CONNECTION LIMIT 300;

相關內容