You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证pg-bouncer与PostgreSQL的联动是否正常工作?

确认pgBouncer与PostgreSQL联动的验证方法

要验证你的pgBouncer是否正常代理PostgreSQL的读写请求,可以通过以下几个实操步骤确认:

1. 读写操作交叉验证

  • 先通过pgBouncer连接数据库:
    psql -p 6432 -U user db1
    
  • 在这个会话里执行写操作(比如先创建测试表,再插入数据):
    CREATE TABLE IF NOT EXISTS test_pgbouncer (id SERIAL, content TEXT);
    INSERT INTO test_pgbouncer (content) VALUES ('request via pgbouncer');
    
  • 直接连接PostgreSQL的5432端口,查询刚才插入的数据:
    psql -p 5432 -U user db1
    
    SELECT * FROM test_pgbouncer;
    
    如果能查到插入的记录,说明写请求已经通过pgBouncer转发到PostgreSQL;反之,修改5432端口会话里的数据,再回到6432端口的会话查询,能看到更新结果则说明读请求也正常代理。

2. 查看pgBouncer的连接状态

pgBouncer自带管理数据库,通过它可以直接查看代理连接情况:

  • 连接到pgBouncer管理库:
    psql -p 6432 -U user -d pgbouncer
    
  • 执行以下命令查看连接池状态:
    SHOW POOLS;
    
    你会看到db1对应的条目,其中active(活跃连接数)、waiting(等待队列数)会随你的操作变化;
  • 查看客户端和后端服务器连接:
    SHOW CLIENTS;
    SHOW SERVERS;
    
    CLIENTS列表里是连到6432端口的客户端连接,SERVERS列表里是pgBouncer主动连到5432端口的后端连接,两者对应上就说明代理链路正常。

3. 检查PostgreSQL的连接来源

直接连接PostgreSQL,查看当前连接的来源信息:

psql -p 5432 -U user db1
SELECT client_addr, application_name, usename FROM pg_stat_activity WHERE datname = 'db1';

如果看到有来自服务器本地IP(或127.0.0.1)的连接,且application_name为pgBouncer(取决于你是否在pgBouncer配置里设置了application_name_add_host = 1),这些就是pgBouncer转发请求时建立的后端连接,证明所有通过6432的请求都经过了代理。

4. 阻断pgBouncer验证可用性

临时停止pgBouncer服务(以systemd为例):

sudo systemctl stop pgbouncer

此时尝试用psql -p 6432 -U user db1连接,应该会直接失败;而用5432端口仍能正常访问,这反过来证明之前通过6432的请求确实是由pgBouncer代理处理的。


内容的提问来源于stack exchange,提问作者Shahariar Ashik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:25:14