黑帽联盟

 找回密码
 会员注册
查看: 1890|回复: 1
打印 上一主题 下一主题

[基础服务] Centos释放内存以及自动脚本

[复制链接]

883

主题

38

听众

3277

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    难过
    1 小时前
  • 签到天数: 1607 天

    [LV.Master]伴坛终老

    最近服务器老是运行缓慢
    free -m 查看,发现内存跑满了。
    再 top,然后按下shift+m,也就是按内存占用百分比排序,发现排在第一的进程,才占用0.9%。
    那是什么占用的呢?
    百度了一下,据说是centos为了提高效率,把部分使用过的文件缓存到了内存里。
    如果是这样的话,我又不需要这样的文件性能,那就可以释放。如下两个命令就可以:
    #sync
    #echo 3 > /proc/sys/vm/drop_caches
    内存释放后,就占用很低了

    可以定时执行吗?百度了一个脚本过来。

    • # 脚本开始
    • #
    • ##########################
    • #  Freemem by vpshz.com
    • ##########################
    • #!/bin/sh
    • Time1=`date +%Y%m%d`
    • Time2=`date +%k:%M:%S`
    • mkdir /backup/freemem/
    • cd /backup/freemem/
    • #
    • #echo "">memstat_$Time1.log
    • #
    • echo $Time1--$Time2 >>memstat_$Time1.log
    • echo "------------------" >>memstat_$Time1.log
    • echo "The mem stat is :" >>memstat_$Time1.log
    • echo "" >>memstat_$Time1.log
    • free >>memstat_$Time1.log
    • echo "" >>memstat_$Time1.log
    • #sync
    • echo "....Freeing......" >>memstat_$Time1.log
    • echo "">>memstat_$Time1.log
    • #
    • echo 1 > /proc/sys/vm/drop_caches
    • echo 2 > /proc/sys/vm/drop_caches
    • echo 3 > /proc/sys/vm/drop_caches
    • echo "---> OK ! " >>memstat_$Time1.log
    • echo "">>memstat_$Time1.log
    • free >>memstat_$Time1.log
    • echo "=========================================================================">> memstat_$Time1.log
    • echo "">>memstat_$Time1.log
    • echo "">>memstat_$Time1.log
    • cd -
    • cat /backup/freemem/memstat_$Time1.log
    • # 脚本结束



    另外一个脚本如下:

    • # vim /backup/freemem/freemem.sh
    • #!/bin/bash
    • used=`free -m | awk 'NR==2' | awk '{print $3}'`
    • free=`free -m | awk 'NR==2' | awk '{print $4}'`
    • echo "===========================" >> /backup/freemem/mem.log
    • date >> /backup/freemem/mem.log
    • echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /backup/freemem/mem.log
    • if [ $free -le 200 ] ; 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" >> /backup/freemem/mem.log
    • else
    •                 echo "Not required" >> /backup/freemem/mem.log



    赋予脚本执行权限   chmod 777 /backup/freemem/freemem.sh
    或者chmod +x ./backup/freemem/freemem.sh
    定时执行的办法:echo "*/30 * * * * root /backup/freemem/freemem.sh" >> /etc/crontab

    此外还可以通过修改/etc/sysctl.conf的方法来达到自动释放缓存的目的。   但是内存不够用,最好还是去找找其他的原因,比如程序设置是否合理,是否突发访问量很大,或者程序设计不合理导致内存溢出等,毕竟操作系统本身设计会考虑各方面的问题,强制腾出cache的大小,可能只是把问题给暂时屏蔽了,不利于判断问题的所在。
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    0

    主题

    0

    听众

    37

    积分

    黑帽菜鸟

    Rank: 1

  • TA的每日心情
    开心
    2017-10-8 02:14
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    这个是需要的
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部