Apache 重载 VIRT 与 RES 内存

pak*_*ako 8 linux memory debian memory-usage apache-2.2

我有一台 Debian 5 服务器,它的流量很大。现在服务器有 4 GB 的 RAM,没有交换内存。我在上面看到 Apache 进程每个消耗大约 180 MB 的虚拟内存 (VIRT) 和 16 MB 的实际 RAM (RES)。那么我可以同时运行多少个 Apache 线程呢?大约 4 GB / 180 MB = 22 或 4 GB / 16 MB = 256?

McJ*_*eff 10

虚拟内存大小并不像您的常驻集那么重要。虚拟内存将包括映射到的东西,例如共享库和诸如此类的东西(它们只会驻留在物理 RAM 中一次)。RSS 会告诉您内存中实际存在的内容,以及 Virt 的位置。告诉您有多少可用的虚拟地址空间已被吞噬。

你的第二个计算会更接近,尽管它很低。具有 4GB RAM 的服务器可以运行远远超过 256 个 Apache 进程。根据您的流量模式和 IO 等待限制,运行超过 256 个可能是一个好主意,因为其中很多进程可能只是等待内核在设备之间铲除数据。还要考虑 COW 之类的因素以及所有内容都指向相同的“httpd”二进制文件的事实,这样您会获得更高的效率。

现在,使用 2GB 的交换空间重建您的系统。交换不再只是充当“慢速记忆”。

作为免责声明,我已经很长时间没有关心 Linux 内存管理的细节了,可能与我的事实有些偏差,但要点是可靠的!


The*_*tor 1

该值主要取决于当前服务器负载的实验。

尝试使用“apache top”收集一些数据。进行一些配置更改并重试。由于我不知道您的具体用例,因此很难得出一些具体的数字。

如果您希望Web 服务器的内存消耗可预测,请查看 http://wiki.nginx.org/Main

它以一种非常酷的方式解决了一些可扩展性问题。

它并不适合所有用例,但一定要考虑它。

您可以部署它来减少 apache 实例的负载。它适合在反向代理配置中提供静态和缓存内容,以及其他高负载场景。

尝试一下,它是免费的:-)