请教,apache新增进程消耗的内存和实际free命令中看到的内存不相符。

Cry_Out 2012-12-14 08:11:59
现有如下状态。

一台闲时的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.才对啊?

不明白,请高手分析一下。
...全文
239 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cry_Out 2012-12-18
  • 打赏
  • 举报
回复
自己顶一下,有高手帮着看一下吗?

24,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧