本地域与localhost的性能

Bar*_*lom 3 mysql localhost

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

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

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

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

Dav*_*fer 9

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

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

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