请教,apache新增进程消耗的内存和实际free命令中看到的内存不相符。
现有如下状态。
一台闲时的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.才对啊?
不明白,请高手分析一下。