服务器内存不足怎么办?一文教会你配置Swap虚拟内存(Linux/Windows)

服务器内存不足怎么办?一文教会你配置Swap虚拟内存(Linux/Windows)

你是不是有过这样的体验?你的云服务器只有1GB或2GB的内存,平时跑个博客也还算顺畅。但某天,你心血来潮,在后台多开了几个插件,或者网站的访问量突然增加,然后……灾难发生了。你的SSH连接突然卡住,网站打开显示“502 Bad Gateway”,服务器就像一个被掐住了喉咙的人,瞬间窒息,动弹不得。

你登录控制台一看,内存使用率:99.9%。

这种因为内存耗尽而导致的“猝死”,是所有小内存服务器的宿命吗?不。

如果我们能给服务器的内存,办一张“信用卡”,那情况会怎么样?

当你的“现金”(物理内存/RAM)用完时,你可以先“刷卡”(使用一部分硬盘空间),透支一点额度,来应付眼前的紧急情况,避免彻底“破产”(系统崩溃)。虽然“刷卡”的手续费有点高(硬盘读写比内存慢得多),但这笔小小的代价,却能让你在最危急的关頭,保持“支付能力”,不至于满盘皆输。

Swap(虚拟内存),就是你亲手为服务器办理的这张“内存信用卡”。

今天,这篇深度指南,将手把手教你,如何在Linux和Windows这两种主流的服务器系统上,正确地开启和配置这个“救命法宝”。


第一章:激烈的思想斗争 —— 我的服务器,到底需不需要Swap?

在我们动手之前,必须先解决一个在技术圈争论已久的问题:“都2025年了,服务器还需要Swap吗?”

你可能会在很多地方看到一种“精英”观点:Swap是机械硬盘时代的古老产物,它会拖慢系统,现代服务器内存都很大,根本不需要它!

这种说法,对,也不对。

  • 它对在哪里? 如果你管理的是一台拥有64GB、128GB甚至更多内存的“性能猛兽”,上面跑着对延迟极其敏感的核心数据库业务,那么,是的,你应该尽可能避免使用Swap。因为在这种场景下,任何一次从高速的RAM到慢速的硬盘的读写切换,都可能引发性能抖动。这就像F1赛车,追求的是极致速度,车上连备胎都不会带。
  • 它错在哪里? 我们绝大多数人,特别是新手、学生、中小企业主,我们手里的是什么?是那些1核1G、2核2G、2核4G的“经济适用型”云服务器!我们的服务器,不是F1赛车,它更像是一辆需要拉货、代步、偶尔还可能要走点烂路的“五菱宏光”。 对于我们的“五菱宏光”来说,最重要的,不是跑出2.5秒的百公里加速,而是在拉着一车货物爬坡时,别熄火!

Swap对我们小内存服务器的核心价值,从来都不是“提升性能”,而是“保障生存”!

  • 它是“防崩”保险: 当内存占用瞬间飙升时(比如一个有Bug的插件、一次意外的并发访问),Swap能提供一个缓冲垫,让系统不至于因为“内存不足”(Out of Memory)而被内核(OOM Killer)“一刀砍死”某个重要进程(比如你的数据库或Web服务)。
  • 它是“冷宫”: 内存里,总有一些不那么重要的、长期不被访问的数据(比如某些后台服务的非核心模块)。操作系统会很聪明地,把这些“打入冷宫”的数据,暂时挪到Swap这个“临时储物间”里,从而腾出宝贵的、高速的RAM空间,留给那些真正需要“热数据”的核心应用。

所以,结论是什么?对于内存小于等于4GB的云服务器,配置一个合理的Swap,绝对是一个明智的、专业的、能让你高枕无忧的选择。

第二章:Linux篇 —— “手搓”一个灵活的Swap文件

在Linux世界里,我们将使用最现代、最灵活的“Swap文件”方式,而不是传统的“Swap分区”。

比喻: 这就像你发现家里的储物空间不够了,你是选择敲掉一堵墙,重新砌一个固定的储物间(Swap分区),还是选择买一个大小合适的成品储物柜,灵活地摆放在角落里(Swap文件)?当然是后者更方便!

假设你已经SSH登录了你的Ubuntu/Debian服务器。

第一步:“体检”—— 看看服务器现在有没有Swap

sudo swapon --show

如果这条命令没有任何输出,说明你的系统当前没有任何Swap。我们继续。如果它有输出,说明你的服务商已经为你配置好了,你可以跳过或考虑是否需要调整。 你也可以用free -h命令,看看Swap那一行的总容量是不是0B

第二步:“划出一块地”—— 创建Swap文件

我们将创建一个2GB大小的Swap文件。对于2GB内存的服务器来说,这是一个非常合理的尺寸。

sudo fallocate -l 2G /swapfile

  • fallocate是一个能瞬间创建出指定大小文件的命令,效率极高。
  • -l 2G就是指定文件大小为2GB。
  • /swapfile是我们将要创建的Swap文件的路径和名字。

第三步:“上锁”—— 设置正确的文件权限

这个Swap文件,是系统内核的“私房钱”,绝不能让任何普通用户或程序随意读写。我们需要给它上一个最严格的“门锁”。

sudo chmod 600 /swapfile

chmod 600的意思是,只有文件的“所有者”(也就是root用户),才有权对它进行读写,其他任何人,连“看一眼”的权限都没有。这是至关重要的安全步骤!

第四步:“挂牌营业”—— 格式化并启用Swap

地圈好了,锁也上了。现在,我们要正式通知操作系统:“嘿,哥们,这块地,以后就是你的‘内存信用卡’了,你可以开始往里面存东西了。”

  1. 格式化为Swap专用格式: sudo mkswap /swapfile 你会看到系统返回一段信息,告诉你它已经成功地把这个文件设置成了Swap空间。
  2. 立即启用这个Swap空间: sudo swapon /swapfile

第五步:“写入族谱”—— 实现开机自动挂载

好了,现在你的Swap已经开始工作了。但这个状态是“临时”的。如果你的服务器重启,这个已经启用的Swap就会“失忆”。我们需要把它,像传家宝一样,写进系统的“族谱”/etc/fstab文件里,让它世世代代,开机自启。

  1. 先备份一下“族谱”,以防万一: sudo cp /etc/fstab /etc/fstab.bak
  2. 用“神笔”把Swap的身份,写进“族谱”的末尾: echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab 这句命令,会把/swapfile none swap sw 0 0这行“血脉记录”,追加到/etc/fstab文件的最后。

【专业进阶】调整你的“刷卡”意愿 —— swappiness

Linux内核有一个非常有趣的参数,叫swappiness(交换倾向)。它的值从0到100。

  • 比喻: 它就像你钱包里,你对“刷信用卡”这件事的“渴望程度”。
  • swappiness=60(桌面系统的默认值): 意味着你是一个“月光族”。现金刚用掉一小半,你就开始手痒,跃跃欲试地想刷信用卡了。这对于桌面系统是好事,能让系统保持流畅。
  • swappiness=10(服务器推荐值): 意味着你是一个“保守的储蓄家”。你宁愿把钱包里的每一分现金都花光,实在万不得已,才回去碰一下信用卡。

对于服务器来说,我们当然希望尽可能地使用高速的物理内存。所以,我们应该调低swappiness的值。

  1. 查看当前值: cat /proc/sys/vm/swappiness (默认通常是60)
  2. 临时修改(重启后失效): sudo sysctl vm.swappiness=10
  3. 永久修改: sudo nano /etc/sysctl.conf,在文件末尾追加一行vm.swappiness=10,然后保存退出。

第三章:Windows篇 —— 在图形界面中优雅地“扩容”

如果你用的是Windows Server,那么恭喜你,整个过程,连一行命令都不需要敲。

第一步:找到那个“隐藏很深”的设置入口

  1. 登录你的Windows Server远程桌面。
  2. 在开始菜单,找到并打开“控制面板”(Control Panel)。
  3. 进入“系统和安全”(System and Security) -> “系统”(System)。
  4. 在左侧,点击“高级系统设置”(Advanced system settings)。
  5. 在弹出的“系统属性”窗口中,切换到“高级”(Advanced)选项卡。
  6. 在“性能”(Performance)区域,点击“设置…”按钮。
  7. 在“性能选项”窗口中,再次切换到“高级”(Advanced)选项卡。
  8. 你终于看到了!在“虚拟内存”(Virtual memory)区域,点击“更改…”按钮。

是不是感觉像在玩俄罗斯套娃?别担心,最难的一步(找路),你已经完成了。

第二步:自定义你的“信用卡额度”

  1. 在“虚拟内存”窗口中,取消勾选顶部的“自动管理所有驱动器的分页文件大小”。
  2. 在驱动器列表中,选中你的C:盘。
  3. 选择下面的“自定义大小”。

第三步:设定“初始额度”与“最大额度”

你会看到两个输入框:

  • 初始大小 (MB):
  • 最大值 (MB):

最佳实践是:将这两个值,设置为同一个数字。 这样做,是告诉Windows:“嘿,直接给我一张固定额度的信用卡,不要让它变来变去。” 这可以避免分页文件在硬盘上产生碎片,从而获得最佳性能。

该设置多大? 一个通用的建议是,设置为你物理内存的1到1.5倍

  • 比如,你的服务器是4GB (约4096MB)内存,你可以将“初始大小”和“最大值”,都设置为4096
  • 如果是2GB (约2048MB)内存,就都设置为2048

第四步:“盖章”与“重启”

输入好数值后,千万别忘了点击旁边的“设置”按钮! 然后一路点击“确定”退出所有窗口。

最后,系统会弹出一个提示,告诉你“必须重新启动计算机才能使更改生效”。是的,在Windows的世界里,这个“重启”是不可避免的。选择“立即重新启动”。

当你的服务器再次回到你面前时,它就已经拥有了那张你为它精心办理的、能解燃眉之急的“内存信用卡”了。


为服务器配置Swap,这个行为,看似简单,却是一个管理员从“新手”走向“成熟”的标志。

它意味着,你不再只满足于让服务器在“风和日丽”的日子里运行。你开始思考,如何在“狂风暴雨”来临时,为它准备好那件最不起眼,却最能救命的“雨衣”。这,就是专业与业余的区别。

知识库

Windows Server 2022值得升级吗?与2019版本深度对比分析

2025-9-18 9:47:15

知识库

告别服务器“盲飞”:三款大神级开源免费性能监控工具深度介绍

2025-9-19 9:56:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧