· Yorian Chiong · Drone · 阅读时长 ≈ 8分钟
Linux增加虚拟内存Swp,以解决内存不足等问题
安装docker最少要多少内存?最低内存需求:2GB(但实际体验较差,建议至少4GB以上)。关键因素:Docker本身占用内存较少,但运行容器时内存需求取决于具体应用。

持续集成和构建的工具有很多,除了著名的 Jenkins,Travis,CircleCI,还有最近比较热门的 Github Action 和 Gitlab CI/CD。但是这些工具面对私人项目不是要收费就是占用大量服务器资源,作为个人开发者的私人项目如果想要使用并不友好。那么开源免费的 Drone CI 是个不错选择,它不但非常轻量,而且十分强大。并可以结合私有代码仓库自动编译、构建服务,几行脚本即可实现自动化部署。
Drone作为轻量级云原生CI/CD工具,相比Jenkins具有显著优势:
- 资源占用低:基于Docker容器化运行,单个Pipeline平均内存消耗<100MB
- 云原生支持:原生集成Kubernetes、Docker等云原生技术栈
- 配置即代码:完全通过.drone.yml定义流程,版本可控
- 高性能:测试显示并发构建能力比Jenkins高3-5倍16
前言
本文将分享如何在小内存VPS上,通过创建Swap分区巧妙地突破内存瓶颈,成功部署应用(测试环境)并提升系统稳定性的实战经验,希望能为同样身处内存困境的朋友们提供一些参考。
关于 Swap
在Linux系统中,内存管理是保证系统流畅运行的关键。你是否曾遭遇过系统卡顿,甚至在运行大型程序时意外崩溃的窘境? 这很可能源于内存不足。Swap,作为Linux内核中一项重要的内存管理技术,能有效缓解此类问题。本文将由浅入深地剖析Linux Swap的概念、作用、配置方法以及使用注意事项。
Swap(交换空间)本质上是硬盘上预留的一块特殊区域,它被巧妙地用来模拟物理内存(RAM)。 当RAM空间告急时,系统会将暂时不常用的数据“转移”到Swap分区,从而释放宝贵的内存资源,保障关键应用程序的正常运行。 形象地说,Swap就像一个“内存缓冲区”,在系统面临内存压力时,挺身而出,发挥缓冲作用。
Swap 的作用
- 扩展可用内存:当物理内存(RAM)不足时,系统将部分不活跃的内存数据转移到 Swap 空间(硬盘/SSD 上),避免进程崩溃。
- 支持休眠(Hibernate):休眠功能需要 Swap 空间存储内存快照。
- 应对内存峰值:即使 RAM 充足,Swap 仍可缓解突发的高内存需求。
是否需要设置 Swap
建议启用 Swap 的场景:
- 物理内存 ≤ 4GB:小内存设备(如 VPS、老旧电脑)必须设置 Swap。
- 运行内存密集型应用:如数据库(MySQL)、虚拟机、编译大型代码。
- 启用休眠功能:Swap 大小需 ≥ 物理内存。
- 避免 OOM(内存耗尽):防止系统因内存不足强制终止进程。
可能无需 Swap 的场景:
- 物理内存 ≥ 16GB 且负载稳定:如果内存常年富余,Swap 使用率极低。
- 高速 SSD 敏感型应用:频繁 Swap 可能影响 SSD 寿命(但现代 SSD 通常能承受)。
Swap 使用优先级
Swap 使用优先级取决于 swappiness 的值大小(范围 0 - 100,默认 60),该值决定系统使用物理内存和Swap空间的倾向性。
- 较低值(如 10):尽量少用 Swap,适合 SSD 或大内存。
- 较高值(如 60):更积极使用 Swap,适合机械硬盘或小内存。
VPS 推荐配置
SSD 磁盘的 VPS 通用场景推荐以下配置:
- 物理内存 ≤ 2GB:Swap = 2 × RAM,swappiness = 60
- 2GB < 物理内存 ≤ 4GB:Swap = 4GB,swappiness = 30
- 4GB < 物理内存:Swap = 4GB,swappiness = 10
管理 Swap
查看当前 Swap
查看当前系统内存使用情况:
free -m
Swap 交换分区大小即为当前虚拟内存大小。
设置 Swap
根据需要 Swap 大小创建一个空文件:
sudo fallocate -l 2G /swapfile
设置该文件权限为仅 root 可以读写:
sudo chmod 600 /swapfile
将该文件格式化为 Swap 文件:
sudo mkswap /swapfile
启用 Swap 文件:
sudo swapon /swapfile
写入 Swap 信息到系统启动分区挂载配置文件中:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
禁用 Swap
停止所有的 Swap:
sudo swapoff -a
删除 Swap 文件:
sudo rm -rf /swapfile
编辑系统启动分区挂载配置文件:
sudo vim /etc/fstab
删除 Swap 信息:
/swapfile none swap sw 0 0
调整 Swap 使用优先级
查看当前 Swap 使用优先级
cat /proc/sys/vm/swappiness
写入配置到内核参数配置文件中:
echo 'vm.swappiness = <number>' | sudo tee -a /etc/sysctl.conf
从配置文件加载并立即应用内核参数:
sudo sysctl -p
注意事项
配置swap并不复杂,但使用时需注意以下事项:
- 适度分配:根据需求分配适度大小,避免过度分配,过大的swap不仅浪费磁盘空间,还会急剧降低系统性能。
- 选择存储介质: 优先将swap放置在SSD上。 机械速度较慢,会降低swap的效果。
- 定期监控: 使用
free -h或top命令监控swap的使用情况。 若swap长期处于高负荷状态,可能需要考虑增加RAM。 - 安全至上: Swap可能存储敏感数据,如密码。 建议在关机时清空swap,或对其进行加密,防止数据泄露。
总结
通过上述步骤,我们成功在Debian系统上创建并启用了Swap文件,并确保它在系统重启后自动加载。合理的Swap配置可以帮助提高系统的稳定性和性能,特别是在物理内存较少的情况下。尤其是在内存受限的情况下,swap可作为重要的保障措施。无论你是系统管理员还是普通用户,配置swap都将带来显著的收益。
声明:以上内容为博主记录的博客文章,仅供参考。本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。


