• CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存


    CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存
    来自:互联网 时间:2020-03-22 阅读:114
    以下情况可能造成Linux内存占用过高
    服务配置存在直接分配错误,或隐性分配不合理等
    程序有BUG
    被恶意流量数据包攻击
    资源配置与流量不科学
    CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存
    都会造成服务器内存占用过高,出现访问延迟高,速度慢甚至挂机的问题。想要根除这个问题最科学的方法:
    使用top等命令找出内存占用高的进程
    分析原因:程序BUG/服务配置不合理或错误
    根据原因进行针对性修复优化
    但今天我们只讲通过shell脚本CentOS/Linux自动定时清除/释放内存的方法,此方法属于加法优化,在上面的基础上进行优化补充。
    CentOS/Linux自动定时清除/释放内存
    编写 shell 文件:dropcache_min.sh:简约
    #!/bin/bash
    #每两小时清除一次缓存
    echo "开始清除缓存"
    sync;sync;sync #写入硬盘,防止数据丢失
    sleep 10#延迟10秒
    echo 3>/proc/sys/vm/drop_caches
    编写 shell 文件:dropcache.sh:条件判断
    #!/bin/bash
    used=`free -m | awk 'NR==2' | awk '{print $3}'`
    free=`free -m | awk 'NR==2' | awk '{print $4}'`
    echo "===========================" >> /var/spool/cron/dropcache.log
    date >> /var/spool/cron/dropcache.log
    echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /var/spool/cron/dropcache.log
    #如果可用内存小于5.5G则进行清理释放
    if [ $free -le 5500 ] ; then
    sync && echo 1 > /proc/sys/vm/drop_caches
    sync && echo 2 > /proc/sys/vm/drop_caches
    sync && echo 3 > /proc/sys/vm/drop_caches
    echo "OK" >> /var/spool/cron/delcache.log
    else
    echo "Not required" >> /var/spool/cron/dropcache.log
    fi
    保存脚本并赋权限,
    $ chmod +x dropcache.sh
    # 测试权限
    $ ./dropcache.sh
    用root用户创建定时任务
    $ echo "*/30 * * * * root /var/spool/cron/dropcache.sh" >> /etc/crondtab
    每30分钟自动运行。
    确保crond启动以及开机自启
    相关命令# 开机自启 $ systemctl enable crond.service service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置 service crond status //查看服务状态 # 查看定时任务是否被执行 $ crontab -l

  • 相关阅读:
    关于MVC与MVP的理解
    使用JDBC连接数据库
    常见DML语句汇总
    java字符常量
    java中Map,List与Set的区别
    面向对象重写(override)与重载(overload)区别
    嵌入式系统的体系结构 图解
    使用webpack + momentjs时, 需要注意的问题
    联想电脑屏幕亮度无法调节
    树形数据构造
  • 原文地址:https://www.cnblogs.com/xuanbjut/p/14271536.html
Copyright © 2020-2023  润新知