IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    解决swapper: page allocation failure. order:4, mode:0x20

    bear发表于 2016-12-09 18:08:45
    love 0

    一般在小内存的机器上会遇到这样的问题,这里附上解决办法

    先看一下系统设置

    $ cat /proc/sys/vm/zone_reclaim_mode
    0
    
    $ cat /proc/sys/vm/min_free_kbytes
    1433
    

    解决办法:

    $ sysctl -w vm.zone_reclaim_mode=1
    #当区域内存不足时允许使用内存回收,此项默认被禁用,因为对服务器来说,Cache非常重要
    
    $ sysctl -w vm.min_free_kbytes=2048
    #告诉内核随时保持2M的内存空闲
    #当可用内存低于这个参数时, 系统开始回收Cache内存, 以释放内存, 直到可用内存大于这个值
    #值越高, 内核越早开始回收内存, 空闲内存越高
    #设定这个参数时请小心, 因为该值过低和过高都有问题
    #太低可防止系统重新利用内存, 这可导致系统挂起并让 OOM 杀死多个进程
    #将这个参数值设定太高(占系统总内存的 5-10%)会让您的系统很快会内存不足
    #Linux 的设计是使用所有可用 RAM 缓存文件系统Cache. 该值设定太高的结果是在该系统中花费太多时间重新利用内存
    #默认值:
     * 16MB:    512k 
     * 32MB:    724k 
     * 64MB:    1024k 
     * 128MB:   1448k 
     * 256MB:   2048k 
     * 512MB:   2896k 
     * 1024MB:  4096k 
     * 2048MB:  5792k 
     * 4096MB:  8192k 
     * 8192MB:  11584k 
     * 16384MB: 16384k 
    
    $ echo 'vm.zone_reclaim_mode = 1' >> /etc/sysctl.conf
    $ echo 'vm.min_free_kbytes = 2048' >> /etc/sysctl.conf
    

    然后可以确认一下

    cat /proc/sys/vm/zone_reclaim_mode
    1
    cat /proc/sys/vm/min_free_kbytes
    2048
    

    参考文档
    内核参数Zone_reclaim_mode介绍
    内存域水印值:min_free_kbytes



沪ICP备19023445号-2号
友情链接