簡體   English   中英

psql: FATAL: 剩余的連接槽是為非復制超級用戶連接保留的

[英]psql: FATAL: remaining connection slots are reserved for non-replication superuser connections

我想了解此錯誤何時發生以及如何解決。 我檢查了pg_stat_activitypg_locks但無法弄清楚哪個進程正在耗盡連接

我們正在使用 sqlalchemy 連接到數據庫,如下所示

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine_url = f'{dbms}://{username}:{password}@{hostname}:{port}/{database}'

engine = create_engine(engine_url, pool_size=20, max_overflow=10)
Session = sessionmaker(bind=engine)

db_session = Session()

這是Heroku的擴展“psql:致命:剩余的連接槽是為非復制超級用戶連接保留的”

我正在 sqlalchemy 引擎 url 的應用程序名稱中添加客戶端進程 ID。 這將被存儲在application_namepg_stat_activity ,這將是有幫助的,從沒有就此被打開了哪里調試。

import os
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

client_hostname = os.environ.get('HOSTNAME', 'UNKNOWN')
client_pid = os.getpid()


engine_url = f'{dbms}://{username}:{password}@{hostname}:{port}/{database}?application_name={client_hostname}_{client_pid}'

engine = create_engine(engine_url, pool_size=20, max_overflow=10)
Session = sessionmaker(bind=engine)

db_session = Session()

這顯示了連接的來源,並且應用程序名稱限制為64 個字符,因此我們可以包含您想要傳遞給 db stats 的任何自定義信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM