Apache重负载VIRT vs RES内存

我有一个Debian 5服务器,获取大量的stream量。 现在服务器有4 GB的RAM,没有交换内存。 我看到,Apache进程每消耗大约18​​0 MB的虚拟内存(VIRT),以及16 MB的真实RAM(RES)。 那么我可以同时运行多less个Apache线程呢? 大约4 GB / 180 MB = 22或4 GB / 16 MB = 256?

虚拟内存的大小不像你的常驻设备那么重要。 虚拟内存将包括映射到诸如共享库之类的内容以及什么(它将只驻留在物理内存中一次)。 RSS告诉你什么是内存,Virt。 告诉你有多less可用的虚拟地址空间被吞噬。

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

现在,用一个好的2GB交换空间重build你的系统。 交换不再只是“慢速记忆”。

作为一个免责声明,自从我关心Linux内存pipe理的细节已经有很长一段时间了,并且可能会对我的事实有些偏离,但其要点是坚实的!

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

尝试用'apache top'收集一些数据。 进行一些configuration更改并重试。 因为我不知道你的具体用例,所以很难提出一些具体的数字。

如果你想为你的Web服务器预测内存消耗,请看http://wiki.nginx.org/Main

它以非常酷的方式解决了一些可伸缩性问题。

每个用例都是不正确的,但肯定会考虑它。

你可以部署它来减less你的Apache实例的负载。 它适用于在反向代理configuration中提供静态和caching内容,以及其他高负载情况。

给它一个旋转,它是免费的:-)