以M为单位查看内存
free -m
Linux/Unix系统是非常稳健的,虽然内存占用显示90%以上,但依然可保证365天以上无须重启。对于Linux系统,评估其压力的主要指标是最近5分钟的负载指数:比如用w命令或者top去看,可以看到“0.70 0.35 0.01”这样的数字,分别表示5分钟内的、10分钟内的、15分钟内排队的进程数,只要第一个数字即5分钟内的负载不大于5,系统就是健康的,不用做任何维护;如果这个数字大于了5,那么通常系统速度就会变慢,一般有如下几种可能:
1) 有程序占用大量CPU,使用top命令来检查(看看是否有java程序锁死之类的故障)
2) 有程序占用大量内存,使得内存真正不够用了(这个才是真正需要加内存的时候),比如由于MySQL在较大负载下运行容量为GB级别的数据库导致内存不够用,需要给服务器插入更多物理内存
3) 磁盘系统读写故障,IO吞吐错误造成CPU负载上升,需要光盘引导进入单用户模式扫描修复磁盘,修不好就只能更换新硬盘了
因此,对于Linux/Unix系统内存占用的百分比,无须过于关心,一般检查系统负载参数即可
首先cat /proc/sys/vm/drop_caches的值,默认为0
手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行 sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
然后手动释放缓存echo 3 > /proc/sys/vm/drop_caches
生产环境不推荐直接释放缓存
MEM应用使用率计算
mem可用=memfree+buffers+cached
memusd utl =(memtotal - memfree-buffers-cached)/memtotal
#或者
100 - (memfree+buffers+cached)/memtotal =memuse utl
计算:写个内存使用率的脚本结果输出到文件
vim memuseutl.sh
#!/bin/bash
memfree=`free -m | grep -w Mem | awk '{print $4}'`
membuff=`free -m | grep -w Mem | awk '{print $6}'`
#可用的等于memfree+buffers+cached
#memcache=`free -m | grep -w Mem | awk '{print $7}'`
memtotal=`free -m | grep -w Mem | awk '{print $2}'`
memmsg=`echo "scale=2;($memtotal-$memfree-$membuff)/$memtotal*100" | bc`
memuse=`echo $memmsg | awk -F "." '{print $1}'`
echo -e 内存使用率: $memuse% >> /mnt/script/memutl
查看执行结果
free -m | grep -w Mem | awk '{print ($2-$4-$6)/$2*100}' |awk -F "." '{print $1}
#其中$2是total $4是free $6(cache+free)
显示内存使用量最高的前 10 个进程
top -o %MEM -bn1 | head -n 17