![](/img/trans.png)
[英]Where to even begin investigating issue causing database crash: remaining connection slots are reserved for non-replication superuser connections
[英]psql: FATAL: remaining connection slots are reserved for non-replication superuser connections
我想了解此錯誤何時發生以及如何解決。 我檢查了pg_stat_activity
和pg_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()
我正在 sqlalchemy 引擎 url 的應用程序名稱中添加客戶端進程 ID。 這將被存儲在application_name
中pg_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.