服务器为何要使用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://test.idctop.com/article/482388.html

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

相关推荐

  • AI大模型用卡怎么选择?2026年热门AI绘画软件推荐

    2026年AI大模型用卡的核心在于平衡算力密度与显存带宽,推荐优先选择配备HBM3e内存的高性能GPU集群,并采用混合精度训练策略以优化成本效益,随着人工智能从概念验证走向规模化落地,算力基础设施已成为制约模型迭代速度的关键瓶颈,对于开发者和企业而言,如何选择合适的硬件配置,不仅关乎训练效率,更直接影响最终的商……

    2026年6月14日
    4210
  • 服务器维护记录怎么做?服务器日常维护记录模板

    服务器维护不是简单的重启或打补丁,而是一套涵盖安全加固、性能调优与数据备份的系统工程,其核心目标是确保业务连续性与数据绝对安全,很多站长或运维人员往往把服务器维护当成“救火”工作,只有当网站打不开、响应变慢时才匆忙处理,这种被动式的维护不仅效率低下,还极易造成不可逆的数据丢失,真正的专业维护应当是预防性的,通过……

    2026年7月11日
    3800
  • 服务器默认IP地址到底能不能修改?, 修改方法有哪些?

    服务器默认IP地址绝大多数情况下都可以修改,但具体操作取决于服务器操作系统和网络环境,且修改后需要同步更新网络配置和依赖服务,否则可能导致连接中断, 无论是物理机、虚拟机还是云服务器,IP地址都不是一成不变的,但修改前必须明确你改的是内网IP还是公网IP,因为两者的修改方式和影响范围完全不同,服务器默认ip地址……

    2026年7月28日
    300
  • 大模型INT8和INT4有何区别?大模型量化INT8和INT4怎么选

    INT8量化将模型精度从32位降至8位,推理速度提升约2倍,显存占用减半,适合大多数生产环境;INT4进一步降至4位,速度再提升2-3倍,显存再减半,但精度损失较大,需配合微调或特定硬件支持,适合对延迟极度敏感且能容忍轻微精度下降的边缘场景,大语言模型在落地应用中,量化技术是平衡性能与成本的关键杠杆,随着模型参……

    2026年6月22日
    2400
  • IoT云托管_托管云账户

    IoT云托管就是把物联网设备的数据接入、存储、计算和安全统统交给云端托管账户打理,企业不再自己养服务器、不再熬夜修故障,按用量付费就能撑起亿级设备连接,很多做物联网的朋友第一次听到“IoT云托管”和“托管云账户”时,容易和普通的云服务器混为一谈,简单说,普通云服务器给你一台空机器,系统、数据库、安全补丁、消息队……

    2026年8月21日
    400
  • 大华ai大模型怎么打开?大华ai大模型使用教程

    大华AI大模型通过深度整合视觉感知与行业知识图谱,能够显著降低企业智能化转型门槛,实现从单一设备管理向全域智能决策的跨越,大华AI大模型的核心能力解析视觉感知与语义理解的深度融合传统安防系统往往只能识别“有人”或“有车”,而大华AI大模型具备的是“理解”能力,它不仅能看清画面,还能读懂场景背后的逻辑,在工厂车间……

    2026年6月13日
    2900
  • 如何操作东莞ipv6网站建设与联通平台续费,流程是什么?

    东莞企业进行IPv6网站建设,核心在于完成域名AAAA解析、服务器双栈配置和应用层适配,联通平台续费则需登录管理后台进入”产品续费”页面完成支付,整体改造周期约7-15个工作日,东莞IPv6网站建设的背景与必要性为什么东莞企业需要关注IPv6改造近年来,随着国内IPv6规模部署持续推进,东莞作为制造业重镇,企业……

    2026年8月14日
    400
  • 医疗AI大模型哪个好用?2026最新医疗人工智能大模型排名

    2026年医疗AI大模型推荐首选通义千问医疗版、百度灵医智惠及腾讯觅影,它们凭借极高的临床准确率、合规的数据安全架构以及成熟的医院落地场景,成为医疗机构数字化转型的核心引擎,医疗行业正处于从“信息化”向“智能化”跨越的关键节点,传统的电子病历系统只能存储数据,而新一代医疗AI大模型能够理解、推理并生成专业的医学……

    2026年6月15日
    30900
  • 如何实现非阻塞式客户端连接服务器?非阻塞网络编程实战技巧

    非阻塞式客户端连接服务器的核心在于利用异步I/O模型(如Epoll、Kqueue或NIO),通过事件驱动机制让线程在等待网络响应时不挂起,从而以极低的资源消耗实现高并发连接处理,在传统网络编程中,客户端发起连接后往往需要“傻等”服务器响应,这种阻塞模式在连接数增多时会迅速耗尽系统资源,想象一下,如果你去银行办事……

    2026年7月3日
    900
  • 怎么做IIS优化与安装,详细步骤有哪些呢?

    IIS网站部署慢、响应卡顿,根源往往不在服务器硬件,而是安装环节的组件缺失与参数配置失当;本文直接给出从零开始的IIS安装步骤详细版,以及一套经过生产环境验证的IIS优化配置方案,IIS安装步骤详细版:先装对,再谈优化很多站长拿到Windows Server第一件事就是打开服务器管理器乱点一通,结果网站跑起来才……

    2026年8月12日
    600

发表回复

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