温馨提示×

centos如何调参postgresql

小樊
45
2026-09-30 13:04:36
栏目: 云计算

在 CentOS 上调优 PostgreSQL,通常分为 系统层参数、PostgreSQL 配置文件参数、资源限制 和 监控验证 四部分。下面按实战步骤说明。


一、PostgreSQL 主要配置文件位置

CentOS 上常见路径:

/var/lib/pgsql/<version>/data/postgresql.conf
/var/lib/pgsql/<version>/data/pg_hba.conf

编辑配置:

vi /var/lib/pgsql/15/data/postgresql.conf

修改后重启或 reload:

systemctl reload postgresql-15
# 或
systemctl restart postgresql-15

二、系统层调优(CentOS)

1. 关闭透明大页(THP)

PostgreSQL 不推荐 THP:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

永久生效:

vi /etc/rc.d/rc.local
# 添加上面两行
chmod +x /etc/rc.d/rc.local

2. 内核参数(/etc/sysctl.conf)

# 共享内存
kernel.shmmax = 17179869184
kernel.shmall = 4194304

# 网络
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096

# 文件句柄
fs.file-max = 655360

生效:

sysctl -p

三、PostgreSQL 核心调优参数

1. 内存相关(最重要)

shared_buffers = 4GB          # 物理内存的 25%
work_mem = 64MB               # 复杂查询可提升
maintenance_work_mem = 1GB    # VACUUM / INDEX
effective_cache_size = 12GB   # 物理内存的 50%-75%

2. 并发与连接

max_connections = 500
superuser_reserved_connections = 10

3. WAL 与写入性能

wal_buffers = 16MB
checkpoint_timeout = 15min
checkpoint_completion_target = 0.9
synchronous_commit = off   # 非强一致场景

4. 查询优化

random_page_cost = 1.1
effective_io_concurrency = 200
default_statistics_target = 100

四、CentOS 用户资源限制

vi /etc/security/limits.conf
postgres soft nofile 65536
postgres hard nofile 65536
postgres soft nproc 65536

五、使用工具自动调参(推荐)

pgTune(快速生成配置)

yum install -y epel-release
yum install -y pgtune

或在线: https://pgtune.leopard.in.ua/


六、验证与监控

查看当前配置

SHOW shared_buffers;
SHOW max_connections;

性能监控

yum install -y pg_top
pg_top

或:

SELECT * FROM pg_stat_activity;
SELECT * FROM pg_stat_statements;

七、典型场景建议

场景 建议
读多写少 提高 shared_buffers
写密集 降低 checkpoint 频率
高并发 控制 max_connections + 连接池

如果你能提供:

  • PostgreSQL 版本
  • CentOS 版本
  • 内存 / CPU
  • 使用场景(OLTP / 分析)

我可以给你一套 可直接用的 postgresql.conf 配置。

0 踩