admin 管理员组文章数量: 1184232
云服务器增加虚拟内存
本文环境:CentOS 7
如果服务器上运行了较多的应用,当内存不足时,就会发生宕机的情况。可以通过增加虚拟内存的方式,提高总的内存容量,以解决这一问题。
创建 swap 分区
查看内存使用情况
free -h
解释一下看到的信息:
- Mem 这一行显示了服务器的物理内存的使用情况。
- Swap 这一行显示了虚拟内存的使用情况,如果没有创建过虚拟内存,则为0。
创建 swap 文件
创建名为 swapfile 、大小为 4G 的 swap 文件(执行需要几十秒):
dd if=/dev/zero of=/var/swapfile bs=1024 count=4194304
解释一下这段代码:
- dd:用于读取、转换并输出数据的命令
-
if=/dev/zero:参数
if用于指定源文件,这里我们用/dev/zero,是因为它是“零”设备,可以无限的提供空字符。 -
of=/var/swapfile:参数
of用于指定目的文件,这里我们指定文件的路径是/var/swapfile。 -
bs=1024:参数
bs指 block size,用于设置单位数据块同时读入/输出的块字节大小,这里我们设定为 1024 字节,即 1KB 。 -
count=4194304:参数
count用于设置拷贝块的个数,我们设定的个数是 4194304 = 1024 * 1024 * 4 ,加上前面设定了每个块的大小是 1KB,因此 swap 文件总大小为 1024 * 1024 * 4 * 1 KB = 4 GB 。
建立 swap 分区
用 mkswap 命令建立 swap 分区,并指定 swap 文件是刚才创建好的
/var/swapfile
mkswap /var/swapfile
激活 swap 分区
swapon /var/swapfile
如果出现提示【不安全的权限 0644,建议使用 0600】,可以忽略,也可以听从建议修改权限。
chmod -R 0600 /var/swapfile
激活后,可以使用
free -h
查看系统内存情况。
修改 swap 配置
开机自动挂载 swap 分区
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
调整系统使用 swap 分区的策略
系统使用虚拟内存是有一定策略的,通过参数 swappiness 来平衡。不同系统的默认值不太一样,Ubuntu 是 60,Linux 是 30。
swappiness 的值,越大表示越积极使用 swap 分区,越小表示越积极使用物理内存。以值取 30 为例,代表了当剩余物理内存小于 30% 时,系统开始使用 swap 分区。
一般的建议是:
- 如果内存充足,就将 swappiness 值设置很低,甚至为0,以避免系统进行 swap 而影响性能。
- 如果内存不足,就将 swappiness 值设大,让系统更多地使用 swap 分区,但不要设太大(除非是 SSD ),一般设置在 10 ~ 50 之间即可。
查看当前的 swappiness 值:
cat /proc/sys/vm/swappiness
(临时)修改 swappiness 值为 10:
sysctl vm.swappiness=10
(永久)修改 swappiness 值为 10:
echo "vm.swappiness = 10" >> /etc/sysctl.conf
删除 swap 分区
讲完了怎么创建,再讲讲怎么复原,需要 3 步:
step1. 停止正在使用的 swap 分区
swapoff /var/swapfile
step2. 删除swap分区文件
rm -rf /var/swapfile
step3. 删除或注释掉之前在
/etc/fstab
文件里追加的开机自动挂载配置内容,以及在
/etc/sysctl.conf
文件里追加的 swappiness 值。
vim /etc/fstab # 注释这一行: /var/swapfile swap swap defaults 0 0
vim /etc/sysctl.conf # 注释这一行: vm.swappiness = 10
版权声明:本文标题:一键开启!云服务器虚拟内存优化指南,让应用飞起来 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1770949401a3539402.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论