Chinaunix首页 | 论坛 | 博客
  • 博客访问: 158333
  • 博文数量: 42
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 377
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-01 11:18
个人简介

虔诚运维

文章分类

全部博文(42)

文章存档

2014年(42)

我的朋友

分类: LINUX

2014-07-15 17:44:29

我们知道,Linux在/proc/{pid}/status中记录了内存使用的实时情况。需要关注的是VmSize(虚拟内存大小),VmData(虚拟数据),VmStk(虚拟栈)这3个域的值。

以下我们以检查nginx服务的内存使用情况为例。

1. 把所有nginx进程的pid写入一个文件:

    ps aux|egrep "nginx: (master|worker)"|awk '{print $2}' > nginx_pid.txt

2. 生成变量:

    A=`ps aux|egrep "nginx: (master|worker)"|awk '{print "/proc/" $2 "/status "}'`

3. 把所有nginx进程使用的VmSize值写入一个文件:

    cat `echo $A`|egrep "VmSize"|awk '{print $2}' > nginx_VmSize.txt

4. 把所有nginx进程使用的VmData值写入一个文件:

    cat `echo $A`|egrep "VmData"|awk '{print $2}' > nginx_VmData.txt

5. 把所有nginx进程使用的VmSize值写入一个文件:

    cat `echo $A`|egrep "VmStk"|awk '{print $2}' > nginx_VmStk.txt

6. 列印出来:

    paste nginx_pid.txt nginx_VmSize.txt nginx_VmData.txt nginx_VmStk.txt | sed '1i pid\tVmSize\tVmData\tVmStk'

综合以上命令:

    A=`ps aux|egrep "nginx: (master|worker)"|awk '{print "/proc/" $2 "/status "}'`;ps aux|egrep "nginx: (master|worker)"|awk '{print $2}' > nginx_pid.txt;cat `echo $A`|egrep "VmSize"|awk '{print $2}' > nginx_VmSize.txt;cat `echo $A`|egrep "VmData"|awk '{print $2}' > nginx_VmData.txt;cat `echo $A`|egrep "VmStk"|awk '{print $2}' > nginx_VmStk.txt;paste nginx_pid.txt nginx_VmSize.txt nginx_VmData.txt nginx_VmStk.txt | sed '1i pid\tVmSize\tVmData\tVmStk'

即可打印出当前nginx所有进程使用内存的情况了:

 pid     VmSize  VmData  VmStk
733     16908   2752    84
734     16908   2752    84
735     16908   2752    84
736     16908   2752    84
740     16908   2752    84
743     16908   2752    84
746     16908   2752    84
747     16908   2752    84
748     16908   2752    84
749     16908   2752    84
20257   14924   768     84
20959   16920   2764    84
20960   16920   2764    84
20961   16920   2764    84
20962   16920   2764    84
20963   16920   2764    84
20970   16920   2764    84
20971   16920   2764    84
20972   16920   2764    84
20973   16920   2764    84
20974   16920   2764    84
20975   16920   2764    84
20976   16920   2764    84
20977   16920   2764    84
20978   16920   2764    84
20979   16920   2764    84
20980   16920   2764    84
20981   16920   2764    84
20982   16920   2764    84
20983   16920   2764    84
20984   16920   2764    84
28040   15056   900     84 

通过比较测试前和测试后的数值,可以观察出是否存在内存泄露。

阅读(2905) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~