Shell编程---监控检查系统某进程内存使用量

23 篇文章 2 订阅
18 篇文章 1 订阅
题目要求:使用shell脚本监控检查系统某进程内存使用量
分析:

在对应用服务进行维护时,也经常遇到由于内存使用过大导致进程崩溃,造成业务中断的情况。例如:32 位程序可寻址的最大内存空间为 4G,如果超出将申请内存失败,同时物理内存也是有限的。内存使用过高可能由于内存泄露,消息堆积等情况。通过脚本对业务进程内存使用量进行时时监控,可以在内存使用量异常时及时发送告警,便于维护人员及时处理。
我们可以通过指定进程pid获得此进程内存使用量,如果此进程内存使用量超过 1.6G(可以根据实际情况进行调整),则输出告警,否则输出正常信息。

解答:
命令行测试:
[root@myhost~]# ps -ef | egrep tomcat | egrep root |  egrep -v "grep|vi|tail" | sed -n 1p | awk '{print $2}'
18430
[root@myhost~]# ps -p 18430 -o vsz
   VSZ
14896208
[root@myhost~]# ps -p 18430 -o vsz | egrep -v VSZ
14896208

脚本:
#!/bin/sh
source /etc/profile

#define variable

psUser=$1
psProcess=$2
pid= `ps -ef | egrep ${psProcess} | egrep ${psUser} |  egrep -v "grep|vi|tail" | sed -n 1p | awk '{print $2}'`
echo ${pid}
if [ -z ${pid} ];then
	echo "The process does not exist."
	exit 1
fi   

MemUsage=`ps -p ${pid} -o vsz |egrep -v VSZ` 
 (( ${MemUsage} /= 1000)) 
echo ${MemUsage} 

if [ ${MemUsage} -ge 1600 ];
	then
		echo “The usage of memory is larger than 1.6G”
	else
	 	echo “The usage of memory is ok”
fi

情景拓展:Centos内存占满或使用率过高处理方法
概述:

经常会遇到CentOS用着用着变慢了,free -m查看内存使用情况,发现内存跑满了或过高

[root@myhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:         16081        882      15198          0        122        510
-/+ buffers/cache:        249      15831
Swap:            0          0          0
分析:

输入top,再按shift+m,按内存占用百分比排序,发现应用也没占多少内存,那是什麽占用的呢?其实是CentOS为了提高效率,把部分使用过的文件缓存到了内存里。这样的话如果不需要这样的文件性能,可以直接释放来缓解内存压力。

[root@myhost ~]# top
top - 14:54:15 up 2 days, 19:22,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 128 total,   1 running, 127 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16467076k total,   904060k used, 15563016k free,   125576k buffers
Swap:        0k total,        0k used,        0k free,   522472k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
 2568 grafana   20   0 1142m  55m  15m S  0.0  0.3   1:05.35 grafana-server     
  785 root      20   0 1392m  30m 7604 S  0.3  0.2   9:25.89 CmsGoAgent.linu    
 1249 root      10 -10  120m  11m 9180 S  0.0  0.1   7:30.05 AliYunDun          
 1557 root      20   0 81756 4844 2236 S  0.0  0.0   0:28.22 aliyun-service     
 1242 root      20   0 31960 4456 2808 S  0.0  0.0   0:49.32 AliYunDunUpdate    
 4751 root      20   0  100m 4452 3432 S  0.0  0.0   0:00.02 sshd               
 1542 postfix   20   0 81204 3516 2628 S  0.0  0.0   0:00.11 qmgr    
 .
 .
 .
 .
解决:
[root@myhost ~]# sync
[root@myhost ~]# echo 3 > /proc/sys/vm/drop_caches
[root@myhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:         16081        265      15816          0          1         40
-/+ buffers/cache:        223      15857
Swap:            0          0          0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值