Apache VirtualHost的成本

在Apache中有多less(如数百)VirtualHost指令的性能/内存成本是多less? 一般来说,这是一个好主意吗?

我目前正致力于改善我公司的按需基础设施。 我们拥有的是一个非常经典的体系结构:每个客户都有一个子域,例如customer1.service.com ,它导致我们的物理服务器之一(它们实际上是虚拟机,但不重要,所以我们称之为主机)。 这些主机可以为多个客户提供服务,由于我们的服务是基于Web的,因此我们有Apache向我们的Web应用程序发送请求。 基本上Apache是​​一个HTTP代理,只是这样做的。

由于我们的主机并不那么繁忙,所以我希望能够在它们中的每一个上运行我们的应用程序的多种风格,并且Apache将我们的客户发送到正确的应用程序。 AFAIK实现这一目标的唯一方法是为每个子域/客户提供一个VirtualHost指令。 因此,我基本上是问一百个人是否能够很好地工作或者出现性能问题。

另外,每个flavor都有一个Location指令不是一个选项,因为该应用程序写得不好,不支持path中的额外位(如customer1.service.com/v1/ )。

随意提出任何可能在你看来更好的工作。

谢谢!

除非你使用64M内存的386运行,否则100个虚拟主机将不会成为性能或内存问题。 总的来说,我不会担心,直到你处于10000+的虚幻状态。

忽略Richard提出的所有考虑,我想知道每个请求的运行时性能成本是多less。 看起来,性能损失随着基于名称的虚拟主机的数量和(最终)与基于IP的虚拟主机的数量呈线性增长呈线性增长。

有一个哈希表(大小为256阿帕奇2.2.17)IP地址散列。 每个存储桶都包含可能能够处理该请求的虚拟主机的链接列表。 细节在vhost.c

如果不分析代码,很难说执行时间的百分比与虚拟主机相匹配。

更大的httpd.confconfiguration文件在Apache重新启动,重build或更新期间可能会导致额外的延迟,因为Apache显然需要处理这些文件。 例如,如果你有一个带有〜2000个主机的httpd.conf文件,你可能会有一个超过100K行的文件,这可能需要30-60秒的时间来处理,具体取决于你所拥有的信息量。

那么有额外的灾难恢复注意事项来检查,如果文件损坏了,你会拆除多less个主机? 更新Apache时,重build需要多长时间,或者由于大小,更新会对计算机造成多大的影响?

简单的问题,如语法错误可能会导致大文件的巨大问题,一个错误,数百个主机脱机:)

编辑:如果您将子域redirect到另一个物理服务器,为什么不使用DNS区域呢?