Debian 上 PostgreSQL 网络设置优化指南
一 基础连通性与访问控制
- 打开监听与端口:编辑数据目录下的 postgresql.conf,将 listen_addresses = ‘*’,确认 port = 5432;Debian 常见数据目录为 /etc/postgresql/<版本>/main/。重启服务生效。
- 配置客户端认证:编辑 pg_hba.conf,按最小权限添加规则,优先使用 scram-sha-256。示例:
- 局域网网段:host all all 192.168.1.0/24 scram-sha-256
- 临时开放所有来源(不推荐生产):host all all 0.0.0.0/0 scram-sha-256
- 防火墙放行:
- UFW:sudo ufw allow 5432/tcp
- 或 iptables:sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
- 注意:修改 postgresql.conf/pg_hba.conf 后需重启;生产环境避免使用 trust,统一使用 scram-sha-256 并限制来源网段。
二 内核与 TCP 栈优化
- 启用 TCP_NODELAY:在 postgresql.conf 设置 tcp_nodelay = on,减少高频短查询的小包延迟,对 OLTP 场景尤为有效。
- 保活机制防断连:显式设置 tcp_keepalives_idle = 60、tcp_keepalives_interval = 10、tcp_keepalives_count = 6,避免跨公网/云环境因中间设备空闲超时导致“连接已重置”。
- 增大 TCP 缓冲区:提升大结果集/批量传输吞吐。示例(写入 /etc/sysctl.conf 后执行 sysctl -p):
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- 说明:PostgreSQL 不直接控制 TCP 缓冲区大小,上述为操作系统层调优,能显著改善高延迟/高带宽链路下的传输效率。
三 连接管理与并发
- 引入连接池:使用 pgBouncer 或 pgPool-II 复用连接,降低 TCP 三次握手/SSL 协商 与后端进程创建开销;短连接频繁的业务,响应时间通常可下降数十毫秒。
- 合理控制连接数:避免无限制增大 max_connections;通过连接池实现“高并发、低占用”,并配合应用侧连接生命周期管理。
四 安全与加固要点
- 限制来源网段:在 pg_hba.conf 仅放行业务所需 CIDR,避免使用 0.0.0.0/0;认证方式优先 scram-sha-256。
- 精细化防火墙:仅允许受控来源访问 5432/tcp,并限制管理端口(如 22/tcp)来源;使用 ufw/iptables 持久化规则。
- 变更与审计:变更 postgresql.conf/pg_hba.conf 后及时重启并审计;为 postgres 等超级用户设置强口令,禁止滥用 trust。
五 快速检查清单
| 优化项 |
关键配置 |
建议值/做法 |
| 监听与端口 |
postgresql.conf: listen_addresses, port |
listen_addresses=‘*’; port=5432 |
| 认证与来源 |
pg_hba.conf |
例:192.168.1.0/24 使用 scram-sha-256 |
| 防火墙放行 |
ufw/iptables |
ufw allow 5432/tcp 或 iptables ACCEPT 5432/tcp |
| 延迟优化 |
postgresql.conf: tcp_nodelay |
on |
| 保活防断 |
postgresql.conf: tcp_keepalives_* |
idle=60, interval=10, count=6 |
| 缓冲区提升 |
sysctl: rmem/wmem, tcp_rmem/wmem |
见上文示例值 |
| 连接管理 |
连接池 |
部署 pgBouncer/pgPool-II,限制 max_connections |
以上步骤按“连通性 → 传输 → 并发 → 安全”的顺序实施,先确保功能正确与安全,再做性能调优,可显著降低网络时延并提升吞吐与稳定性。