为什么环回的延迟比鲤鱼接口的延迟少?

Mic*_*uch 8 networking freebsd performance interface

Stack Overflow Careers 提供如下服务:

user -> internet -> our fw -> nginx -> haproxy -> web farm
Run Code Online (Sandbox Code Playgroud)
  • FreeBSD 是正在使用的操作系统
  • 此盒子上没有防火墙或 QoS
  • nginx 处理我们的 SSL 终止
  • haproxy 处理负载均衡
  • nginx / haproxy 单向推动大约 15 Mbps

在正常操作期间,nginx 接收 HTTP 请求,执行它的操作,并将请求移交给绑定到同一个框上的环回地址 (127.0.0.1) 的 haproxy 实例。

前几天为了进行一些故障排除,我将 haproxy 实例移到了运行 nginx 的同一接口上。这立即为所有请求增加了 100 毫秒的延迟。这个接口并不是真正的物理接口,而是一个鲤鱼接口

谁能向我解释为什么会这样?可能与数据包队列争用?或者环回总是更快,因为它是“软”的?我在这里缺少一些基本的东西,我希望有人会善意地教育我。

Chr*_*s S 1

为了清楚起见,您仅更改了访问方式,从 127 地址更改为本地 IP;正确的?

如果情况确实如此并且产生了影响,那就有些不对劲了。检查路由表并netstat -rn查看本地 IP 路由到的内容,它应该路由到 lo0 接口(就像 127 一样)。

您的netstat -rn输出应该与此大致相似:

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            1.2.3.1            UGS       131  2655014   nge1
1.2.3.0/23         link#2             U           0       88   nge1
1.2.3.4            link#2             UHS         0    34848    lo0
127.0.0.1          link#5             UH          0    64678    lo0
192.168.0.0/26     link#1             U           2 41703537   nge0
192.168.0.1        link#1             UHS         0    70088    lo0
Run Code Online (Sandbox Code Playgroud)