在共享网络托管中,有时数百个虚拟主机在单个 IP 地址上的同一个网络服务器上运行。
共享 IP 地址(而不是共享其他资源)会对性能产生哪些具体影响?
答案1
这影响性能的唯一方式是服务器上的总请求数会更高,以及在 vhost 文件中查找与 url 匹配的请求数会更高。
要确定单个 IP 上有多少虚拟主机在运行,您不能执行反向 DNS,而是执行 IP 查找。您也可以在线执行此操作:http://www.yougetsignal.com/tools/web-sites-on-web-server/
答案2
Apache 使用哈希表非常有效地处理虚拟主机。文档中说:
在初始化期间,会为每个 IP 地址生成一个列表并将其插入到哈希表中。如果在 NameVirtualHost 指令中使用了 IP 地址,则列表包含给定 IP 地址的所有基于名称的虚拟主机。如果该地址没有定义虚拟主机,则 NameVirtualHost 指令将被忽略并记录错误。对于基于 IP 的虚拟主机,哈希表中的列表为空。
由于哈希函数速度快,请求期间对 IP 地址进行哈希处理的开销极小,几乎不存在。此外,该表针对最后一个八位字节不同的 IP 地址进行了优化。
我见过具有超过 1000 个虚拟主机的 Apache 服务器,其性能并不明显比具有 10 个虚拟主机的 Apache 服务器差。