单个 Apache 服务器上有多少个域?

单个 Apache 服务器上有多少个域?

我在一台 Apache 服务器上为我的客户托管了大约 300 个域名。这些域名的流量都不大,所以服务器负载不是问题。

理论上,服务器上可以拥有的这种低流量域名的数量应该没有限制,但我担心如果服务器上的域名太多,那么每个传入请求要检查的域名列表会降低 Apache 的速度。

有没有一个经验法则可以确定 Apache 配置可以有多长,以及它可以处理多少个不同的域而不会出现问题? 500 个可以吗? 5000 个可以吗?

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

答案1

我见过运行着数千个域名的服务器却毫无问题。性能并不会因运行的网站数量而显著下降。

影响服务器响应能力的是请求的总数以及每个请求所需的 CPU 数量(以及带宽、磁盘 IO、数据库调用等其他资源)。

答案2

对于这种事情,没有神奇的经验法则。一切都取决于硬件规格和软件调优。您不会在添加一个新网站后就看到服务器崩溃并卡死(除非这是一个使用率非常高的网站,而您对此毫无准备)。与大多数事情一样,您需要监控服务器性能,当您开始看到服务器速度变慢时,请评估这一点,并考虑硬件升级或新服务器来处理新域名托管。因此,要回答您的澄清问题,问题不在于域名数量,而在于每个域名单独给服务器带来的负载。没有神奇的数字。

答案3

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

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

答案4

我有一些 VPS 服务器,托管着大约 8000 多个域名。服务器运行良好,平均负载始终处于 0.xx 级别。我猜它可以处理更多负载而不会出现问题。添加或删除域名时需要更长的时间来重新编译 Apache。此外,httpd.conf 文件相当大,大约 60M。将域名数量限制在 5000 个左右更安全。

相关内容