Apache 使用 9GB RAM,但 htop 仅显示 2.7GB 已用 RAM。为什么?

Apache 使用 9GB RAM,但 htop 仅显示 2.7GB 已用 RAM。为什么?

我的网站在一天中的某些时候非常慢,我正在寻找原因。我目前正在研究 Apache 内存使用情况,我有 2 个工具可以告诉我它当前使用了多少 RAM:

阿帕奇2伙伴:

curl -sL https://raw.githubusercontent.com/richardforth/apache2buddy/master/apache2buddy.pl | perl

返回:

apache2 is currently using 8849.18 MB of memory.

然后我有这个命令使用ps

ps -ylC apache2 --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'

返回:

Tot=9047860(258)
Avg=9047860/258=34.2473MB

因此,根据这一行,Apache2 使用了大约 9GB 的 RAM,这与 Apache2Buddy 的结果相匹配。

但是,当我运行时,htop我得到的是:

在此输入图像描述

总内存使用量似乎只有2.7GB。为什么结果差距如此巨大?

答案1

驻留大小包括共享页面:这包括共享库,在本例中包括apache2二进制文件本身。您使用的工具对每个进程的所有共享内存进行一次计数,但它们仅在物理内存中出现一次,因此它们使用的数量远远少于您添加驻留大小的预期。

为了更好地了解进程的实际内存使用情况,您必须查看/proc/<pid>/smaps;对于其中描述的每个部分,比较Rss值和Shared_...值。内核尝试通过计算每个进程的 RSS 份额(如 所示)来帮助您执行您感兴趣的计算Pss

相关内容