![在网络托管环境中共享单个 IP 地址如何影响性能?](https://linux22.com/image/608878/%E5%9C%A8%E7%BD%91%E7%BB%9C%E6%89%98%E7%AE%A1%E7%8E%AF%E5%A2%83%E4%B8%AD%E5%85%B1%E4%BA%AB%E5%8D%95%E4%B8%AA%20IP%20%E5%9C%B0%E5%9D%80%E5%A6%82%E4%BD%95%E5%BD%B1%E5%93%8D%E6%80%A7%E8%83%BD%EF%BC%9F.png)
在共享网络托管中,有时数百个虚拟主机在单个 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 服务器差。