如何防止Apache上的testing虚拟主机消耗相对于主机的太多资源?

我有一个运行Plesk的Web服务器。 我已经在apache中创build了一个testing子域,并在那里放置了一个站点的副本用于testing。 由于这样做,服务器上的内存使用率已经上升了很多。 这些文件是一样的,任务是一样的…但是如果我重新启动Apache,并在现场工作了一段时间,使用量总共大约0.5gb / 2.0gb。 在testing网站上访问一个页面可以直接使用1.0Gb,使用率则在1GB左右。

我的第一个问题是,第二个虚拟主机会消耗多less额外的内存是合理的吗? 我不太了解这些东西,但是我可以想象,一旦第二个虚拟主机开始使用,就会caching和/或保留一堆资源,并且该应用程序的两个副本所需的资源量将是该资源的两倍需要一个副本。

我的第二个问题是,如果是这样的话,有什么办法可以告诉系统这个testing服务器是非常低优先级的,而且我非常乐意等待更长的时间来请求它通过,因为它释放内存做完东西之后等等

(我不知道plesk,所以如果这些假设是错误的,这个答案可能是不合格的。)

关于内存使用情况,这取决于您的应用程序后端正在使用什么,因为mod_XXX php或您正在使用的任何脚本语言可能会产生一个新的脚本处理实例来处理第二个虚拟主机。 所以它可能会为自己创build第二个重复caching和缓冲区。 你将不得不提供应用程序服务器的详细信息等

关于为一个地点build立一个更高的优先权,以下是适用的; 假设你的testing子域名是作为NameVirtualHost运行的,那么你的主站点和你的testing子域名站点都在同一个Apache httpd实例的同一个IP地址上运行。

那么问题在于,apache必须从请求中读取HTTP“Host:”标头,以确定哪个虚拟主机应该处理该请求,所以在它可以决定应用限制之前,它已经是大部分的事情了。 (大多数httpd限制适用于每个服务器,而不是每个虚拟主机,有关详细信息,请参阅http://httpd.apache.org/docs/2.2/mod/core.html#rlimitmem

所以很难应用CPU或内存的限制。 但是,您的select可能是启动另一个httpd实例,该实例在该服务器上设置了较小的RLimitMEM,RLimitNPROC,为此您需要另一个IP地址。 (但是这是一个PITA,除非它很容易处理plesk,或者你很乐意混淆init.d文件,而且你可能最终会为第二个httpd /子项使用比以前更多的RAM)