运维常见命令(二)内存不足报警

一 报警:


收到告警信息。

二 查看:


1 free命令

             total       used       free     shared    buffers     cached
Mem:      32880592   32620984     259608          0     210940    1300628
-/+ buffers/cache:   31109416    1771176
Swap:            0          0          0

一共输出4行:第一行就是title。重点看第二三行。

第二行:

total1:   表示物理内存总量。

used1:   表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free1: 空闲的内存

shared1:当前已经废弃不用。

buffers1: 系统分配但未被使用的buffers 数量。

cached1:   系统分配但未被使用的cache 数量。

有个公式:total = used+free 

32880592 = 32620984 + 259608	

第三行:

(-buffers/cache) used内存数:第一部分Mem行中的 used – buffers – cached

32620984 -210940-1300628 = 31109416
这是真实的内存消耗数据。

(+buffers/cache) free内存数: 第一部分Mem行中的 free + buffers + cached

259608 + 210940 + 1300628 = 1771176
这是可挪用的内存数, 是系统当前实际可用内存

第四行:

是指交换分区

备注:buffer与cache的区别两者都是RAM中的数据。

buffer是用于存放要输出到disk(块设备)的数据的,

cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。

关于swap数据:

free命令的所有输出值都是从/proc/meminfo中读出的。

当内存可用数据不够时,会用部分磁盘空间交换。通常内不能足够的清空下这个数据是0.

当出现时值得关注,数据量小时不太影响性能,大了会影响性能。这也是内存告警的意义。


因为已经处理完毕,截图的数据不能还原现场。

三解决

top


top命令是比较常见的。功能强大,其实内存信息也可以在这里看,截图的上半部分就有。不过不如free命令简介直观。

top除了内除外,还会关注CPU信息。后面的文章会详细整理处理CPU100%的告警。

这里我们主要是看下面内存消耗情况:

也就是res那一列。

假设内存16G,部署了7个服务,每个启动脚本分配了2G。就用去了14G。这时候,再有个通用的日志收集模块之类占用内存。内存就占用就比较高了,负载高的时候,空闲内存低于1G就会监控报警。

这里top找到进程主要是跟ps -aux|grep 'java' 结合使用。


其实就是在不迁移服务的情况下,对比下启动脚本里分配的内存大小,跟实际消耗的内存对比下,

举个例子,价格分配了4G,实际只消耗了几百M。那就要调整下启动脚本,调整大小,释放出内存。

***************************************************

熟能生巧,无他

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值