服务器为何要使用swap分区?swap分区设置多少合适

在服务器环境中使用 Swap(交换空间)是一个需要谨慎权衡的技术决策,虽然 Swap 可以作为物理内存不足时的“救命稻草”,但它也会显著影响系统性能。

以下是关于服务器使用 Swap 分区的全面指南,包括最佳实践、配置建议、优缺点分析以及现代替代方案

设置SWAP分区,榨干云服务器性能
加载中
设置SWAP分区,榨干云服务器性能

核心原则:Swap 不是内存的替代品

  • 性能差异巨大:物理内存(RAM)的读写速度比硬盘(即使是 SSD)快几个数量级,当系统频繁使用 Swap 时,会导致严重的磁盘 I/O 瓶颈,表现为系统响应极慢、延迟飙升。
  • 定位:Swap 应仅作为防止 OOM(Out of Memory)崩溃的最后防线,而不是日常运行的主力内存。

Swap 大小建议

Swap 的大小取决于你的物理内存大小和业务类型:

服务器为何要使用swap分区?swap分区设置多少合适

物理内存 (RAM) 推荐 Swap 大小 说明
< 2 GB 2 × RAM 确保有足够的缓冲空间防止崩溃。
2 GB – 8 GB 等于 RAM 平衡内存与交换空间。
8 GB – 64 GB 4 GB – 8 GB 4GB 足够作为安全网;若运行大型数据库(如 MySQL/PostgreSQL),可适当增加。
> 64 GB 4 GB – 16 GB 大内存服务器通常不需要大量 Swap,主要目的是防止突发峰值导致 OOM。

注意:对于云服务商(如 AWS、简米云、酷番云)提供的实例,通常建议开启 Swap,但大小不宜过大,以免掩盖内存泄漏问题。


关键配置:Swappiness 参数

Linux 内核通过 vm.swappiness 参数控制使用 Swap 的倾向。

  • 取值范围:0 – 100
  • 默认值:通常是 60(Ubuntu/CentOS 可能不同)。
  • 推荐值
    • 数据库服务器 / 高性能应用:建议设置为 10 或 0
      • 0:仅在物理内存完全耗尽时才使用 Swap。
      • 10:轻微使用 Swap,但极力避免。
    • 桌面环境 / 一般用途服务器:保持默认或设为 10-20

如何修改 Swappiness:

# 查看当前值
cat /proc/sys/vm/swappiness
# 临时修改(重启后失效)
sudo sysctl vm.swappiness=10
# 永久修改
sudo sed -i 's/vm.swappiness=./vm.swappiness=10/' /etc/sysctl.conf
sudo sysctl -p

创建 Swap 的两种方法

Swap 文件(推荐,灵活)

无需重新分区,适合云主机和已运行的服务器。

# 1. 创建 4GB 的 swap 文件
sudo fallocate -l 4G /swapfile
# fallocate 不可用,使用 

服务器为何要使用swap分区?swap分区设置多少合适

dd 命令: # sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 # 2. 设置权限 sudo chmod 600 /swapfile # 3. 格式化为 swap sudo mkswap /swapfile # 4. 启用 swap sudo swapon /swapfile # 5. 永久生效:添加到 /etc/fstab echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Swap 分区(传统,性能略优)

适用于物理机或安装时已分区的场景。

# 假设 /dev/sdb1 是预留的 swap 分区
sudo mkswap /dev/sdb1
sudo swapon /dev/sdb1
# 在 /etc/fstab 中添加:/dev/sdb1 none swap sw 0 0

何时应该禁用 Swap?

在以下场景中,建议禁用 Swap 或将其 Swappiness 设为 0:

  1. 实时交易系统 / 高频交易:任何磁盘 I/O 都可能导致不可接受的延迟。
  2. 容器化环境(Docker/K8s)
    • Kubernetes 默认建议禁用 Swap,因为 kubelet 无法准确管理容器内存限制。
    • 如果必须使用,需确保 Docker 和 K8s 版本支持 Swap 管理,并仔细调优。
  3. SSD 寿命敏感环境:频繁写入 Swap 会加速 SSD 磨损(虽然现代 SSD 寿命较长,但仍需考虑)。
  4. 内存充足且无突发峰值风险:如果服务器内存始终有 30% 以上空闲,Swap 几乎无用,反而增加复杂性。

监控与调优

如何监控 Swap 使用情况?

# 查看整体内存和 swap 使用情况
free -h
# 查看哪些进程在使用 swap
sudo smem -t -k -P | head -n 20
# 实时监控
sudo htop  # 按 F2 -> Setup -> Display options -> 勾选 "Swap usage"

常见陷阱:

服务器为何要使用swap分区?swap分区设置多少合适

  • Swap 使用率高但系统仍慢:说明系统正在“抖动”(Thrashing),即频繁在内存和磁盘间交换数据,此时应增加物理内存优化应用内存使用,而不是调整 Swap 大小。
  • OOM Killer 触发:Swap 已满且物理内存耗尽,Linux 会启动 OOM Killer 杀死进程,可通过 dmesg | grep -i "out of memory" 查看被杀死的进程。

现代替代方案:zRAM / zswap

对于内存受限的服务器(如小型 VPS、嵌入式设备),推荐使用 zRAM

  • 原理:在 RAM 中划分一块区域,作为压缩的 Swap 设备。
  • 优点
    • 数据在内存中压缩后交换,速度远快于磁盘 Swap
    • 减少磁盘 I/O,延长 SSD 寿命。
    • 无需额外磁盘空间。
  • 适用场景:内存小(如 1GB-2GB)的服务器、容器节点。
# Ubuntu/Debian 安装 zram
sudo apt install zram-tools
# 编辑 /etc/default/zramswap 调整压缩算法和大小

总结建议

  1. 大多数生产服务器:保留 Swap,但设置 swappiness=10,大小 4GB 左右即可。
  2. 高性能/低延迟应用:禁用 Swap,确保物理内存充足。
  3. 小内存 VPS:优先使用 zRAM 而非磁盘 Swap。
  4. 永远不要依赖 Swap 来解决内存不足的问题:它只是临时缓冲,根本解决方案是优化代码、增加内存或水平扩展。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/482388.html

(0)
服务器管理器找不到角色怎么办?如何添加服务器角色
上一篇 2026年7月11日 17:27
如何将Excel数据转化为图表?excel图表制作教程
下一篇 2026年7月11日 17:29

相关推荐

  • 大模型3D并行怎么训练?分布式训练显存优化技巧

    大模型分布式训练的核心在于将模型、数据和计算资源在三维空间(数据并行、张量并行、流水线并行)中进行高效切分与协同,以解决显存墙和通信瓶颈问题,为什么传统训练方式跑不动千亿参数模型在单机单卡时代,我们习惯了把整个模型加载到显存里,但随着模型参数量突破千亿甚至万亿级别,这种“全量加载”的思路直接撞上了显存容量的天花……

    2026年6月17日
    2710
  • 大模型SFT监督微调怎么操作?SFT微调需要哪些数据

    大模型SFT监督微调的核心在于通过高质量指令数据集,让预训练模型从“通用知识储备”转变为“特定任务专家”,其关键不在于数据量的堆砌,而在于数据的质量清洗与指令结构的精准设计,在2026年的AI应用落地场景中,通用大模型往往难以直接满足垂直行业的专业需求,企业或开发者若希望模型具备特定的行业知识、遵循特定的输出格……

    2026年6月17日
    2100
  • 如何判断服务器端客户端在线数目?服务器在线人数统计方法

    服务器端判断客户端在线数目的核心在于维护一个实时状态映射表,通过心跳机制或连接生命周期管理,结合Redis等内存数据库进行原子性计数,从而在毫秒级延迟内获取准确的在线用户规模,在分布式架构日益普及的今天,单纯依赖单机内存已无法满足高并发场景下的精准统计需求,业内专家指出,构建一个健壮的系统需要区分“逻辑在线”与……

    2026年7月5日
    15000
  • if判断式的判断条件怎么写?,if判断式怎么用

    if判断式是编程中实现条件判断的核心语法,它通过布尔值决定程序执行路径,是初学者必须掌握的基础知识,什么是if判断式?if判断式,通常称为if语句,是程序控制流中最基础的结构,它根据一个布尔表达式的真假值,决定是否执行特定代码块,几乎所有现代编程语言都支持if判断式,包括Python、JavaScript、Ja……

    AI资讯 2026年8月10日
    700
  • 大模型部署负载均衡方案

    大模型部署负载均衡的核心在于构建“网关层+推理集群+动态路由”的三层架构,通过智能流量分发解决显存瓶颈与并发延迟矛盾,确保服务高可用,在大模型落地生产的实际场景中,单卡或单服务器早已无法满足业务需求,随着参数量级向千亿甚至万亿迈进,推理成本与响应速度成为企业最头疼的两个痛点,传统的Nginx或LVS负载均衡器虽……

    2026年6月18日
    2800
  • 萤石ai合作大模型是真的吗?萤石ai合作大模型最新消息

    萤石AI通过深度整合行业领先的大模型技术,实现了从单一视频监控向智能感知与决策辅助的跨越,显著提升了家庭与商业场景下的安防效率与交互体验,萤石AI大模型合作背后的技术逻辑从“看见”到“看懂”的质变过去,智能摄像头主要依赖传统的计算机视觉算法,只能识别简单的人形或车辆移动,误报率较高,风吹草动、光影变化都可能触发……

    2026年6月13日
    2700
  • 如何配置iis6服务器证书?,有哪些步骤?

    IIS6配置服务器证书的核心步骤是:通过IIS管理器生成证书请求,提交给CA获取证书文件,然后安装并绑定到目标网站,即可实现HTTPS加密访问,整个过程在Windows Server 2003环境下操作,虽然界面较老,但逻辑清晰,按顺序执行即可完成,IIS6 SSL证书安装步骤详解IIS6的证书配置流程可以拆解……

    2026年8月12日
    600
  • 如何查询浮动IP资源池列表?,有哪些方法?

    查询浮动IP资源池列表的旧版API已经废弃,当前推荐使用网络服务的子网或浮动IP池查询接口获取类似信息,具体迁移方法取决于你使用的云平台版本,查询浮动IP资源池列表接口废弃后如何获取池信息不少开发者发现,以前常用的查询浮动IP资源池列表接口突然标了“废弃”,心里难免犯嘀咕:这个功能以后还能用吗?数据怎么拿?别急……

    2026年8月18日
    200
  • 分布式缓存服务套餐怎么选?分布式缓存服务套餐价格

    分布式缓存服务(Distributed Cache Service)通常指基于 Redis 或 Memcached 等开源引擎构建的云原生缓存解决方案,不同的云服务商(如阿里云、腾讯云、AWS、华为云等)提供的套餐命名和计费模式略有不同,但核心逻辑相似,以下是一个通用的分布式缓存服务套餐分类指南,涵盖主要计费模……

    2026年7月12日
    3800
  • IIS配置网站是什么,如何修改IIS已绑定的域名?

    IIS配置网站就是在Windows服务器上通过Internet Information Services搭建网站服务,而修改已绑定的网站域名则是在绑定设置中更换或添加域名,实现网站访问地址的变更, 无论你是刚接触服务器管理,还是需要迁移站点,理解这两个操作都是基础中的基础,下面直接从实操出发,把核心概念、配置步……

    2026年7月31日
    600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注