在Amazon EC2上托pipe多个域使用的资源

我在使用Ubuntu微型实例的AWS免费层帐户上使用虚拟主机托pipe了4个域。当我只托pipe一个域时,在613MB可用内存中,RAM的使用率大约为250MB。 添加4个域后,使用了535.67 MB,运行了11个apache2实例。
它应该这样工作吗? 只要这些域名根本不被访问。 他们只是redirect在那里,虚拟主机logging被添加。 而已。 那么它是不是像apache保持缩放,因为我们添加更多的虚拟主机logging? 如果我想在一台服务器上托pipe4个域名,标准情况下RAM的数量应该是多less?

不幸的是,Apache为每个请求启动一个工作线程 – 这需要启动基本上完整的Apache副本(有一些共享内存)。 这使得低负载非常容易消耗所有可用内存。 你会希望禁用尽可能多的模块,以最大限度地减lessApache的脚印(记住,产生的线程往往会停留一段时间)。 您将需要查看每个Apache进程的平均内存使用情况(例如,使用ps / top),然后计算您可以运行的最大进程数(在httpd.conf的prefork或mpm块中设置该值)。 在t1.micro实例中,我还build议添加一个基于EBS的交换卷,以便在内存不足的情况下不会closures服务器。

域名本身不会增加你的内存使用量,但是如果你的设置允许的话,Apache会产生更多的工作者 – search引擎等等可能访问的域名将会导致额外的过程。

Apache进程开始大约10MB是相当常见的,并随着使用而增长(每个进程容易达到40-60MB)。 PHP的主要贡献者之一就是PHP(如果你使用的话)。 避免在t1.micro上使用mod_php,因为它会为每个Apache线程增加相当大的开销。 取而代之的是php-fcgi或者更好的php-fpm。 在后面的两种情况下,php解释器独立于Apache运行,提供更好的内存利用率(虽然有轻微的性能损失,但好处远远超过了损失)。

如果你不需要使用Apache(例如,不需要特定的模块,并且不需要.htaccess文件),我会强烈build议nginx(使用php-fpm)。 整体内存使用量将大幅下降,您还应该注意到性能提高。

现代操作系统通常是有意使用所有可用的内存。 假设你以后不能保存,所以没有用处。 保存在RAM中的数据可能在以后需要,并保存磁盘访问。 在不久的将来不可能使用的免费RAM没有任何好处,所以创build大量内存毫无意义。

系统假定你给它的内存,因为你想用它来提高性能。