如果我向我的服务器的 IP 地址发出请求,它会与使用 127.0.0.1 相同,还是更慢?

如果我向我的服务器的 IP 地址发出请求,它会与使用 127.0.0.1 相同,还是更慢?

我有一些运行着 memcached 的应用服务器。

如果我向 10.243.98.5 上的 memcached 发出请求,而它恰好是原始服务器,会发生什么情况?它会使用与 127.0.0.1 相同的快速路径 tcp/ip 堆栈吗?或者我是否可以通过检查 10.243.98.5 是否是同一个框并替换 127.0.0.1 来获得更好的性能?

通常情况下这不会有太大影响,因为您想要的项目很可能位于另一台应用程序服务器上的 memcached 中,但在这种情况下,负载平衡器会划分请求,因此大多数 memcached 请求很可能会解析为本地 memcached 实例。

答案1

您使用的是什么操作系统?我猜这两种方法的性能水平大致相同,因为 10.243.... 的 DNS 记录应该被缓存。您是否尝试过两种方法的计时?

答案2

听起来你已经知道答案了 ;)。在许多情况下,UNIX 将使用:

http://en.wikipedia.org/wiki/Unix_domain_socket

Unix 域套接字比 TCP/IP/UDP 更快,因为它们不涉及网络堆栈。许多 UNIX 应用程序将使用 Unix 域套接字进行本地通信,例如您的数据库驱动程序或 memcached。情况并非总是如此,您应该注意不要将 Unix 域套接字与 UDP 混淆,因为它们完全不同。

答案3

许多操作系统都优化了环回接口。很有可能,数据包会到达路由表,发现它是本地的,然后按照快速路径路由到同一台机器上的输入。不会触及以太网驱动程序、ARP 或其他任何东西。

如果你看一下,你的环回上的 MTU 很可能也会大得多。

相关内容