[Linux]使用虚拟内存解决物理内存不够(unable to realloc ... bytes)问题

什么是Swap分区

Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

使用Swap分区的优势

  • Swap分区,即交换区,系统在物理内存不够时,与Swap进行交换。 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。

在Linux系统上创建Swap分区

  • 成为超级用户
    $su - root

  • 创建Swap文件
    # dd if=/dev/zero of=swapfile bs=1024 count=65536

  • 激活Swap文件
    #/usr/sbin/swapon swapfile

  • 新加的Swap文件已经起作用了,但系统重新启动以后,并不会记住前几步的操作。因此要在/etc/fstab文件中记录文件的名字,和Swap类型
    /path/swapfile none Swap sw,pri=3 0 0

  • 检验Swap文件是否加上
    /usr/sbin/swapon -s

在Linux系统上删除Swap分区

  • 成为超级用户
    $su - root

  • 使用Swapoff命令收回Swap空间
    #/usr/sbin/swapoff swapfile

  • 编辑/etc/fstab文件,去掉此Swap文件的实体

  • 从文件系统中回收此文件
    rm -rf swapfile

当然,如果此Swap空间不是一个文件,而是一个分区,则需创建一个新的文件系统,再挂接到原来的文件系统上

Swap分区的限制

  • Swap分区的限制空间是2G
  • 分配太多的Swap空间会浪费磁盘空间,而Swap分区太少,则系统会发生错误,类似于unable to realloc 2191392 bytes
  • Swap分区应大于或等于物理内存的大小,最小不应小于64M,通常Swap分区的大小应是物理内存的2-2.5倍
  • Swap分区的数量对性能也有很大的影响
    • 因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。
    • 如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。
    原文作者:肖浩呗
    原文地址: https://www.jianshu.com/p/173627a3cef4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞