shell 脚本检测系统的内存变化

while true;
do
    if [ ! -n "$1" ];then
        echo "pls set a arg for memfree that we assagin"
        exit 1
    fi
    memfree=$1
    echo "debug oom shell,we set memfree:${memfree}"
    date
    cat /proc/meminfo | grep -E 'MemFree|MemTotal'  
    ifconfig eth0
    ifconfig vap000
    ifconfig vap001
    cat /proc/sys/net/vap0/link_table

    a=`cat /proc/meminfo | grep -E MemFree | awk '{print $2}'`
    if [ $a -lt $memfree ]; then
        echo 1 > /proc/sys/kernel/printk            ------》 出问题的时候调低printk的优先级
        echo 7 > /proc/sys/net/vap0/debug_pkt   ---》  将系统中指定模块的打印打开,关闭printk为了防止干扰
        cat /proc/sys/net/vap0/counters               ------》  打印发包数量的计数器
        echo "oom issue happen"

         dmesg -c
        msleep 5
    else
        echo "no oom issue"
        echo 5 > /proc/sys/kernel/printk    

       dmesg -c
        sleep 4
    fi
done;

Linux 系统中常常会有一些OOM 的 issue, 使用这个脚本可以时刻检测系统中内存的动态变化,本次我们遇到的问题是wireless driver 总是产生OOM的错误,使用脚本不断打印系统中的counter值, 最终找到了根本原因, 系统中某段时间内产生了大量的ARP包,造成了ARP攻击,从而让driver中分配内存过多,最终导致OOM。

解决的办法也当然就是在driver中加入一个throttle 函数来检测系统中的内存量即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值