我正在调试一个问题,其中某些 http 请求随机花费的时间比正常情况下更长。(正常情况下为几毫秒,异常情况下为 1000 毫秒,最长可达一分钟或更长时间)
该主机有多个 IP,我正在使用的服务由其中两个 IP 上的 nginx 代理。
如果我向第一个 IP 发送请求,一切都会按预期进行,所有请求都很快。如果我向第二个 IP 发送请求,某些请求会随机花费几秒钟或更长时间。
两个 IP 都在同一个网卡上:
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether 00:0c:29:5e:47:7d brd ff:ff:ff:ff:ff:ff
3: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 00:0c:29:5e:47:7d brd ff:ff:ff:ff:ff:ff
inet 192.168.10.73/24 brd 192.168.10.255 scope global bond0
valid_lft forever preferred_lft forever
inet 192.168.10.72/32 scope global bond0
valid_lft forever preferred_lft forever
inet 192.168.10.75/32 scope global bond0
valid_lft forever preferred_lft forever
inet 192.168.10.76/32 scope global bond0
valid_lft forever preferred_lft forever
inet 192.168.10.54/32 scope global bond0
valid_lft forever preferred_lft forever
例如:
curl -H "Host: xxx" http://192.168.10.54:6700/test
会随机变慢,而
curl -H "Host: xxx" http://192.168.10.75:6700/test
总是很快。
两个 IP 均由同一个 nginx 服务器块提供服务:
server {
listen 192.168.10.75:6700;
listen 192.168.10.54:6700;
location / {
proxy_pass http://...;
}
}
我已经检查了开放的端口,但每个 IP 上只有几百个连接。
这是在 Linux 上(3.16.0-8-amd64 #1 SMP Debian 3.16.64-2 (2019-04-01) x86_64 GNU/Linux)服务器在 vmWare 中运行,因此 NIC 报告为0b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
我没有 iptable 规则
我不确定如何进行调试,如能得到任何提示我将非常感激:-)
具体问题:
- 我可以检查同一绑定上的 IP 级别上哪些设置可以不同
- 我可以检查哪些指标来提示原因
- 网络上的其他东西是否会导致这样的影响(重复的 IP、VLAN 配置等?)
- 什么东西可能在 IP 上“超载”或饱和,但在其他 IP 上却不会?