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

云服务器增加虚拟内存

作者: 章光辉_数据 | 来源:发表于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