
systeminit/pgbouncerSystem Initiative PG Bouncer容器是基于轻量级PostgreSQL连接池工具PG Bouncer构建的Docker镜像,旨在简化PostgreSQL数据库连接管理。PG Bouncer通过维护数据库连接池,避免频繁创建和关闭连接带来的性能开销,有效提高数据库资源利用率和访问稳定性,适用于各类需要与PostgreSQL交互的应用场景。
pgbouncer.ini)bashdocker run -d \ --name pg-bouncer \ -p 6432:6432 \ # PG Bouncer默认端口 -v /path/to/local/pgbouncer.ini:/etc/pgbouncer/pgbouncer.ini \ # 挂载配置文件 -v /path/to/userlist.txt:/etc/pgbouncer/userlist.txt \ # 可选:用户认证文件 --network=postgres-network \ # 若PostgreSQL在Docker网络内,指定网络 systeminit/pg-bouncer
创建docker-compose.yml文件:
yamlversion: '3.8' services: pg-bouncer: image: systeminit/pg-bouncer container_name: pg-bouncer ports: - "6432:6432" volumes: - ./pgbouncer.ini:/etc/pgbouncer/pgbouncer.ini - ./userlist.txt:/etc/pgbouncer/userlist.txt environment: - LOG_LEVEL=info # 日志级别:debug/info/warn/error - MAX_CLIENT_CONN=500 # 最大客户端连接数 depends_on: - postgres # 若PostgreSQL也在Compose中定义 restart: unless-stopped postgres: image: postgres:14 container_name: postgres environment: - POSTGRES_USER=dbuser - POSTGRES_PASSWORD=dbpass - POSTGRES_DB=appdb ports: - "5432:5432"
[databases] - 后端数据库配置
ini# 格式:<数据库别名> = host=<postgres_host> port=<postgres_port> dbname=<dbname> user=<user> password=<pass> appdb = host=postgres port=5432 dbname=appdb user=dbuser password=dbpass # 支持通配符匹配所有数据库 * = host=postgres port=5432
[pgbouncer] - 连接池核心配置
ini# 连接池模式:session/transaction/statement pool_mode = transaction # 最大客户端连接数 max_client_conn = 500 # 每个数据库的默认池大小 default_pool_size = 20 # 每个池的最小连接数(预热连接) min_pool_size = 5 # 每个池的最大溢出连接数(临时扩容) reserve_pool_size = 10 # 连接空闲超时(秒) idle_timeout = 300 # 连接生存周期(秒),超时后强制关闭重建 server_lifetime = 3600 # 日志文件路径 logfile = /var/log/pgbouncer/pgbouncer.log # 日志级别 log_level = info # 监听地址和端口 listen_addr = 0.0.0.0 listen_port = 6432 # 管理控制台用户(用于执行状态查询等操作) admin_users = postgres
| 环境变量名 | 描述 | 默认值 |
|---|---|---|
LOG_LEVEL | 日志输出级别 | info |
MAX_CLIENT_CONN | 最大客户端连接数 | 100 |
DEFAULT_POOL_SIZE | 默认池大小 | 10 |
POOL_MODE | 连接池模式 | transaction |
LISTEN_PORT | 监听端口 | 6432 |
IDLE_TIMEOUT | 连接空闲超时(秒) | 300 |
通过PG Bouncer管理控制台监控连接状态:
bash# 连接到管理控制台 psql -p 6432 -h localhost -U postgres pgbouncer # 查看连接池状态 pgbouncer=# show pools; # 查看客户端连接 pgbouncer=# show clients; # 查看服务器连接 pgbouncer=# show servers; # 重新加载配置 pgbouncer=# reload;
pgbouncer.ini和userlist.txt文件需确保容器内用户可读(建议权限644)default_pool_size和max_client_conn,建议default_pool_size不超过PostgreSQL的max_connections值的50%


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务