一台Apache服务器上有多少个域?


9

我在一台Apache服务器上为我的客户托管约300个域。它们都没有太多流量,因此服务器负载不是问题。

从理论上讲,服务器上可以有多少个此类低流量域,但我担心,如果服务器上的域过多,用于检查每个传入请求的大量域会减慢Apache的运行速度下。

有一个经验法则,Apache配置可以使用多长时间,并且可以处理多少个不同的域?500可以吗?5000?

澄清:我不是在问服务器可以处理多少流量。我知道这台特定的服务器至少可以处理两倍于当前流量的数据。我想知道域的数量是否是关键因素。

Answers:


9

我见过具有成千上万个域的服务器正常运行。仅根据您正在运行的站点数,性能不会显着下降。

它是请求的总数以及每个请求需要多少CPU(以及带宽,磁盘IO,数据库调用等其他资源),这会影响服务器的响应速度。


+1-甚至对存储在RAM中的10,000个条目阵列进行串行扫描所花费的CPU时间可以忽略不计。
马克·亨德森

4

这种事情没有万能的法则。这些都是基于硬件规格和软件调整的。您不会添加一个新站点,然后看到服务器翻倒而死(除非这是一个使用率很高的站点,而且您还没有为此做好准备)。与大多数事情一样,您需要监视服务器性能,并且当它开始变慢时,请进行评估,然后查看有关硬件升级或用于处理新域托管的新服务器的信息。因此,为了回答您的澄清点,这与域的数量无关,而与每个域作为服务器负载分别带来什么有关。没有魔术数字。


具体而言,可能是这个问题的答案……
Nandhini Anand 2011年

3
为了备份Holocryptic所说的话,Gene想像一下500个(或5000个)网站中包含一个或两个静态页面的网站所产生的工作量。现在想象一下,如果您仅托管一个网站,就会产生工作负载。但是,如果该网站恰好是google.com或facebook.com怎么办-域的数量不是问题,这些域要求服务器执行的工作。
罗伯·摩尔

@Robert Moir:我不是在问服务器可以处理的流量。我想知道配置文件的域数或长度是否是一个因素。
Gene Vincent

3

您可能会发现http://httpd.apache.org/docs/2.2/vhosts/details.html#hostmatching信息丰富。Apache使用哈希表来处理未映射到*:80的VHost,然后遍历分配给该IP:port的所有VHost的链表,以找到匹配的Server(Name | Alias)。在此过程变得非常昂贵之前,您可能需要托管数百万个域。

您可能还想看看http://httpd.apache.org/docs/2.2/vhosts/mass.html,并根据您当前的方法进行基准测试;一旦获得足够的VHost,以至于链表遍历比lstat()花费更多的时间,VirtualDocumentRoot最终将比单独指定的VHost更快。


我正在使用基于名称的虚拟主机,并且看来Apache仅将哈希表用于基于IP的虚拟主机,从而导致线性搜索。
Gene Vincent

正确。很抱歉,如果我的答案还不是很清楚:哈希表用于选择要迭代的链表,而不是(直接)选择应为给定请求提供服务的VHost(除非不在运行时)NameVirtualHost)。
BMDan

1

我有一些VPS服务器,可托管大约8000多个域。服务器运行正常,平均负载始终在0.xx级别。我想它可以处理更多而没有问题。添加或删除域时,将需要更长的时间来重新编译Apache。另外,httpd.conf文件很大,大约为6000万。将域数限制在5000个左右比较安全。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.