免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1682 | 回复: 2
打印 上一主题 下一主题

[Web] 请教,apache新增进程消耗的内存和实际free命令中看到的内存不相符。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-13 21:51 |只看该作者 |倒序浏览
现有如下状态。

一台闲时的redhat as 4.0 linux 服务器。安装了apache 2.2.4

在闲时,通过top 命令, 可以看到一个httpd进程一般占用10M的内存。
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
13775 mysql     15   0  340m  53m 3980 S  0.0  1.8   0:44.82 mysqld
15377 root      15   0 20204  10m 4684 S  0.0  0.4   0:00.58 httpd
2798 root      34  19 26320  10m 2148 S  0.0  0.4   0:00.95 yum-updatesd
29868 apache    15   0 21020  10m 3024 S  0.0  0.3   0:00.12 httpd
29416 apache    15   0 21004  10m 2996 S  0.0  0.3   0:00.41 httpd
29439 apache    15   0 21004  10m 2996 S  0.0  0.3   0:00.37 httpd
29457 apache    15   0 21004  10m 2996 S  0.0  0.3   0:00.47 httpd
29530 apache    15   0 21004  10m 2996 S  0.0  0.3   0:00.44 httpd
29546 apache    15   0 21004  10m 2996 S  0.0  0.3   0:00.40 httpd
29592 apache    15   0 21004  10m 2996 S  0.0  0.3   0:00.36 httpd
29472 apache    15   0 21004  10m 2992 S  0.0  0.3   0:00.34 httpd
29562 apache    15   0 21004  10m 2992 S  0.0  0.3   0:00.31 httpd
29881 apache    15   0 21008  10m 2992 S  0.0  0.3   0:00.08 httpd

此时free命令查看系统内存使用情况。

             total       used       free     shared    buffers     cached
Mem:       2964056    2602636     361420          0     231664    2074572
-/+ buffers/cache:     296400    2667656
Swap:      2097144        104    2097040

可以看到空闲内存=2667656.  / 1024= 2605MB.

然后,通过在客户端开通AB。 设置500个并发访问。
使得linux 服务器上的httpd进程数增加到了139个。
使用如下命令
ps -ef | grep httpd | wc -l
175


但是通过free,查看内存消耗量.

             total       used       free     shared    buffers     cached
Mem:       2964056    2828572     135484          0     231684    2075648
-/+ buffers/cache:     521240    2442816
Swap:      2097144        104    2097040

此时,空闲内存=2442816 / 1024 =2385MB.

则2605 - 2385 = 220MB. 即增加了将近 160个httpd进程的情况下,只增加了220MB的内存使用量。

按我查top命令中每个httpd消耗10M来看,应试是新增使用内存1600MB.才对啊?

不明白,请高手分析一下。



论坛徽章:
0
2 [报告]
发表于 2012-12-14 20:09 |只看该作者
自己顶一下,求教 啊.......................

论坛徽章:
0
3 [报告]
发表于 2013-06-25 21:50 |只看该作者
好久了,这个问题其实是因为这些httpd进程之间是有共享内存的。但内核计算内存使用率时,可能没有计算这一点。导致人工计算出的全部httpd进程的内存占用量大于实际服务器汇总的内存占用量。


通过pmap可以看到某个进程实际的内存占用量:

详细可以看一下这个贴子的说明:

http://blog.hellosa.org/2010/02/26/pmap-process-memory.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP