首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【腾讯云轻量服务器】如何“超卖”内存资源

【腾讯云轻量服务器】如何“超卖”内存资源

原创
作者头像
Jokey
修改2025-12-01 17:11:48
修改2025-12-01 17:11:48
2.2K0
举报
文章被收录于专栏:Jokey杂货铺Jokey杂货铺

问题背景

相信大家在使用腾讯云轻量服务器时, 由于轻量服务器规格都比较小,cpu 慢都可以接受,可以等,毕竟轻量服务器价格上有优势,但是当需要比较大内存的时候,比如需要编译一个前端项目时需要比较大的内存资源,经常会遇过内存不足整个系统卡死的情况。这种卡死是致命的,无法恢复,只能去控制台触发底层重启,对于正在运行的业务和使用体验来说是不可接受的。

还好是有办法的,在 Linux 中我们可以通过添加交换空间将虚拟内存扩展到物理内存(RAM)之外,也就是将磁盘扩充成内存使用,可以实现“内存的超卖”。

下面将介绍如何在腾讯云轻量服务器上添加一些交换空间(swap)来当作内存使用, 防止应用程序因系统内存耗尽而卡死。

什么是轻量应用服务器(TencentCloud Lighthouse)?产品优势介绍参考文档 产品概述

操作步骤

1. 查看当前系统 swap 情况。

代码语言:bash
复制
# 查看当前开启的 swapon 文件系统
root@VM-0-12-ubuntu:~# swapon --show
NAME          TYPE SIZE USED PRIO
/opt/swapfile file   6G 1.4G   -2 # 系统已开启的 swap 文件系统

# 查看资源使用情况
root@VM-0-12-ubuntu:~# free -h
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       1.0Gi       120Mi        12Mi       808Mi       724Mi
Swap:          6.0Gi       1.4Gi       4.6Gi # swap 空间占用情况

2. 为系统添加新的swap文件系统。

代码语言:bash
复制
# 开始前建议先看看磁盘空间是否足够做 swap 
root@VM-0-12-ubuntu:~# df -h

# 从磁盘申请占 1G 的空间供 swap 使用,这里以 /swapfile2 文件为例
root@VM-0-12-ubuntu:~# fallocate -l 1G /swapfile2

# 安全考虑,给 swap 文件设置仅 root 权限
root@VM-0-12-ubuntu:~# chmod 600 /swapfile2

# 格式化 swap 文件系统
root@VM-0-12-ubuntu:~# mkswap /swapfile2 
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=2347d779-1238-415e-9c13-98634abca760

# 开启 swap 文件系统
root@VM-0-12-ubuntu:~# swapon /swapfile2

# 再次查看当前开启的 swapon 文件系统
root@VM-0-12-ubuntu:~# swapon --show
NAME          TYPE  SIZE USED PRIO
/opt/swapfile file    6G 1.4G   -2
/swapfile2    file 1024M   0B   -3 # 新添加的 swap 文件系统,说明添加成功

3. 配置开机自动挂载swap 文件系统

目前我们手动挂载开启了 swap 文件系统,当节点重启时不会自动挂载,下来我们在/etc/fstab文件中配置挂载选项实现开机时自动挂载 swap 文件。

代码语言:bash
复制
# 追加 /swapfile2 文件到 fstab 配置文件中
root@VM-0-12-ubuntu:~# echo '/swapfile2 none swap sw 0 0' | sudo tee -a /etc/fstab
/swapfile2 none swap sw 0 0

4. swap 使用相关内核参数优化

使用交换文件的代价是“昂贵的”,因为它们比与 RAM 的交互花费的时间更长,可能导致系统性能显著下降,所以我们需要优化一下交换空间使用的条件。

第一个推荐的优化配置项是vm.swappiness ,决定将数据从 RAM 交换到交换空间的频率,该值介于 0 到 100 之间,表示百分比。

代码语言:bash
复制
# 越接近于零时,越不会将数据交换到磁盘,提高物理内存充足时的性能。
# 默认 60, 可以根据实际情况调整, 比如调整到 20
sysctl vm.swappiness=20

第二个推荐的优化配置项是vm.vfs_cache_pressure, 控制文件系统缓存的回收策略。

代码语言:bash
复制
# 默认值是100, 表示系统从缓存中删除信息的速度,我们可以降低该值以减缓删除的速度,以达到利用缓存的目的,例如 50
sysctl vm.vfs_cache_pressure=50

如果需要上述内核参数永久生效,需要添加下 /etc/sysctl.conf , 如下所示:

代码语言:bash
复制
# 安全追加配置文件永久生效
cat << EOF >> /etc/sysctl.conf
vm.swappiness=20
vm.vfs_cache_pressure=50
EOF

# 刷新生效配置
sysctl -p

总结

按照本指南中的步骤操作,你可以在内存不足情况下获得一些空间,不至于系统 OOM 卡死, 配置swap 空间对于避免这些问题非常有用。

腾讯云双十一官网活动链接:双11活动上云拼团Go

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题背景
  • 操作步骤
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档