美文网首页
云服务器增加虚拟内存

云服务器增加虚拟内存

作者: 章光辉_数据 | 来源:发表于2020-04-15 15:00 被阅读0次

云服务器增加虚拟内存

本文环境: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

相关文章

网友评论

      本文标题:云服务器增加虚拟内存

      本文链接:https://www.haomeiwen.com/subject/vmucvhtx.html