安装KingbaseES时服务器swap的设置

Swap(交换空间)是操作系统中的一种内存管理机制。当物理内存(RAM)不足时,操作系统会将物理内存中不常用的数据暂时写入到磁盘上预先划分的 Swap 空间(虚拟内存)中,从而为急需内存的程序腾出空间。当需要这些数据时,再将其从磁盘读回内存。Swap 是物理内存的扩展。当物理内存不足时,系统会使用 Swap 来防止进程因内存耗尽而被强制终止(OOM Killer)。

使用 Swap 会严重拖累性能,消耗 CPU 和 I/O 资源。理想状态是避免数据库活动数据使用 Swap。所有数据库进程使用的总内存(shared_buffers + wal_buffers + work_mem * 并发数 + ...)不应超过物理内存,以避免触发 Swap。

swap 设置建议:

策略 推荐大小 适用场景 说明
传统经验法则 物理内存的 1 到 2 倍 物理内存较小(如 < 32GB)的通用服务器。 这是一个历史悠久的原则,为系统应对内存压力提供较大的缓冲空间。
现代服务器建议 一个固定值(如 4GB 或 8GB)与物理内存等大 物理内存较大(如 ≥ 32GB)的数据库专用服务器。 大内存服务器通常是为了避免使用 Swap。设置 Swap 的主要目的变为: 1. 满足休眠(Hibernate)需求 (如需休眠,Swap 应 ≥ 物理内存)。 2. 应对极端情况,为系统内核和少量后台进程提供最低限度的保障。
最小化策略 一个较小的固定值(如 1GB - 4GB) 云端虚拟机或容器环境,磁盘性能通常较差。 在这些环境下,使用 Swap 的性能代价极高。设置一个较小的 Swap 主要是为了满足系统稳定性要求,防止 OOM Killer 杀死关键进程。
禁用策略 0 (不设置 Swap) 对性能要求极高,且有严格监控和运维保障的系统。 不推荐用于生产环境。除非您能绝对保证物理内存充足,并且能承受因内存耗尽导致数据库崩溃的风险。

针对 KingbaseES 的生产环境建议

强调 "避免使用 Swap" 的性能原则,对于专用数据库服务器,建议如下:

1.首要目标:通过合理配置数据库内存参数(如 shared_buffers,文档建议初始值为系统内存的 25%),确保数据库的活跃数据集能够容纳在物理内存中,从而从根本上避免业务运行期使用 Swap。

2.Swap 大小设置:

如果您的服务器物理内存很大(例如 64GB 以上),建议设置一个 4GB ~ 8GB 的 Swap 空间。这足以应对操作系统本身的内存需求和一些非预期的内存峰值,同时又不会分配过多几乎用不到的磁盘空间。

如果服务器内存相对紧张,可以采用 与物理内存等大 的策略,提供一个安全的缓冲。

3.重要检查:无论设置多大,安装后都应按照文档指导,使用 free -m 等命令监控系统运行状况。如果发现 Swap 被频繁使用(si/so 值较高,可通过 vmstat 1 命令查看),说明物理内存已不足,应优先考虑优化应用或扩容内存,而不是增大 Swap。

相关推荐
qq_37290693几秒前
如何用 style.setProperty 修改带有优先级的 CSS 变量属性
jvm·数据库·python
Shorasul1 分钟前
CSS如何使用-is伪类缩减重复选择器_通过分组选择器提升代码维护效率
jvm·数据库·python
2301_815279522 分钟前
如何用 flatMap 清理数组中的无效数据并同步转换格式
jvm·数据库·python
草莓熊Lotso2 分钟前
Linux 线程同步与互斥(一):彻底搞懂线程互斥原理、互斥量底层实现与 RAII 封装
linux·运维·服务器·开发语言·数据库·c++
2301_764150564 分钟前
CSS如何为目标锚点设置高亮样式_使用-target伪类定位当前模块
jvm·数据库·python
qq_342295824 分钟前
HTML支持变量吗_与JavaScript数据绑定方式【解答】
jvm·数据库·python
feng_you_ying_li5 分钟前
linux之进程概念
linux
j_xxx404_5 分钟前
深入理解Linux底层存储:从物理磁盘架构到文件系统(inode/Block)原理
linux·运维·服务器·后端
2301_813599559 分钟前
如何使用Python查询MongoDB并转为Pandas DataFrame_数据分析集成实战
jvm·数据库·python
214396510 分钟前
如何通过SSH隧道连接远程数据库_本地端口转发与phpMyAdmin
jvm·数据库·python