0

0

postgresql多实例部署如何共享资源_postgresql实例资源规划

冰川箭仙

冰川箭仙

发布时间:2025-12-03 20:53:02

|

782人浏览过

|

来源于php中文网

原创

PostgreSQL多实例部署需合理隔离资源:内存须按实例独占配置且总和不超物理内存25%~40%,CPU应绑定核心并限制连接数,磁盘I/O须分离存储路径,端口、数据目录与配置文件必须完全独立。

postgresql多实例部署如何共享资源_postgresql实例资源规划

PostgreSQL 多实例部署时,不建议盲目共享核心资源,尤其是内存、CPU 和磁盘 I/O。多个实例共存本身就会带来资源竞争,若配置不当,反而导致整体性能下降、查询变慢、甚至实例间相互拖垮。关键在于“合理隔离 + 按需分配 + 可观测性”,而不是“尽量共享”。

内存(shared_buffers 和系统内存)不能共享

每个 PostgreSQL 实例都独立维护自己的 shared_bufferswork_memmaintenance_work_mem 等内存参数。这些内存区域在启动时由各自进程独占申请,操作系统层面无法跨实例复用。

  • 总内存分配量应 ≤ 主机物理内存的 70%~80%,预留空间给 OS 缓存、其他服务和突发负载
  • 多个实例的 shared_buffers 总和不宜超过物理内存的 25%~40%(例如 64GB 内存主机,3 个实例合计 shared_buffers 建议 ≤ 20GB)
  • 避免所有实例都设为“默认值”(如 128MB),要按实际数据规模和并发量差异化配置

CPU 资源可共用但需限制并发压力

CPU 是可被内核调度共享的资源,但多个实例同时执行复杂查询或 VACUUM 时,会争抢 CPU 时间片,造成响应延迟升高。

  • 通过 cpuset(cgroups v1/v2)或 systemd 的 AllowedCPUs= 限制各实例绑定的 CPU 核心范围,避免全核争抢
  • 设置 max_connectionseffective_cache_size 与 CPU 核心数匹配(例如 4 核机器,单实例 max_connections 不宜长期超 100)
  • 对批处理类实例(如 ETL)启用 idle_in_transaction_session_timeout 和低优先级 CPU 调度(nice -10 启动)

磁盘 I/O 是最容易被忽视的瓶颈

多个实例若共用同一块 NVMe 或同一 RAID 组,随机读写会严重叠加,IOPS 和延迟迅速恶化,尤其在 checkpoint、WAL 写入、索引构建时。

析稿Ai写作
析稿Ai写作

科研人的高效工具:AI论文自动生成,十分钟万字,无限大纲规划写作思路。

下载
  • 生产环境强烈建议按实例划分物理/逻辑存储:不同实例使用不同挂载点,最好对应不同 SSD 或不同 LVM 逻辑卷
  • WAL 目录(pg_wal)务必与数据目录分离,多实例更需独立 WAL 存储路径,避免顺序写冲突
  • 使用 iostat -x 1pg_stat_bgwriter 定期观察各实例的写放大、checkpoint 频率和平均 await

端口、数据目录、配置文件必须完全隔离

这是基础但常被轻视的一环。资源规划的前提是实例间无命名冲突、无路径交叉、无配置误覆盖。

  • 每个实例使用唯一端口(如 5432、5433、5434)、独立数据目录(/var/lib/pgsql/data-96-app)、独立日志路径
  • 配置文件(postgresql.confpg_hba.conf)逐实例管理,禁止软链接共用;建议用 ansible 或 pg_createcluster(Debian/Ubuntu)自动化生成
  • 监控时按 portapplication_name 区分指标,Prometheus + postgres_exporter 中用 instance=~"5432|5433" 分组查告警

基本上就这些。多实例不是“多开几个服务”那么简单,它本质是多个数据库引擎在一台机器上并行运行——资源规划的核心逻辑是:把它们当独立小服务器来配,再根据实际负载做适度弹性让渡。不复杂,但容易忽略细节。

相关专题

更多
postgresql常用命令
postgresql常用命令

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、l、c、dt、d table_name、du、i file_name、e和q等。本专题为大家提供postgresql相关的文章、下载、课程内容,供大家免费下载体验。

158

2023.10.10

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

973

2023.11.02

postgresql常用命令有哪些
postgresql常用命令有哪些

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、l、c、dt、d table_name、du、i file_name、e和q等。更详细的postgresql常用命令,大家可以访问下面的文章。

196

2023.11.16

postgresql常用命令介绍
postgresql常用命令介绍

postgresql常用命令有l、d、d5、di、ds、dv、df、dn、db、dg、dp、c、pset、show search_path、ALTER TABLE、INSERT INTO、UPDATE、DELETE FROM、SELECT等。想了解更多postgresql的相关内容,可以阅读本专题下面的文章。

268

2023.11.20

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

351

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2075

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

347

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.09.05

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

HTML教程
HTML教程

共500课时 | 4.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号