本地域与localhost的性能

时间:2010-01-10 14:59:17

标签: mysql localhost

TCP连接之间是否存在性能差异:

  • localhost / 127.0.0.1
  • 解析为本地计算机的域

或者更具体地说,后面的连接是通过环回设备还是通过实际网络?

我问的原因是我正在考虑更改许多PHP应用程序中的数据库设置,因此他们使用完整的域而不是localhost。这样,如果需要,我们可以更轻松地将数据库移动到不同的服务器。

2 个答案:

答案 0 :(得分:7)

这是依赖于实现和操作系统的。在Windows上,任何连接到本地IP地址的东西,即使它是面向外部的IP,都将重新环回。这是数据包嗅探器等应用程序的文档问题,因为您无法嗅探环回。 (Windows不会将环回视为“设备” - 它在网络级别处理。)但是,在这种情况下,它会对您有利。

相比之下,Linux将遵循路由表中的任何内容,因此如果路由表不是,那么发往本地计算机的数据包将通过网络转到本地计算机配置正确。但是,在99%的情况下,路由将正确配置。您的数据包不会通过环回设备,但TCP / IP堆栈将知道您正在联系本地IP,它实际上将在适当的以太网设备中返回。

在正确配置的环境中,使用域名的唯一瓶颈是DNS解析时间。联系外部DNS可能会在配置中增加额外的延迟。但是,如果您将域名添加到/ etc / hosts文件(Windows上为C:\Windows\System32\drivers\etc\hosts),您的系统将跳过DNS解析阶段并直接获取IP,这使得这个时间成本不高。

答案 1 :(得分:1)

这取决于如何解析名称。该过程通常首先是/etc/hosts,然后是DNS,如果失败的话。如果您localhost中有/etc/hosts,那么将whatever.wherever放入文件中会使其以相同的速度解析。