Ubuntu 服务器:局域网中奇怪的延迟跳跃

Ubuntu 服务器:局域网中奇怪的延迟跳跃

我们将老化的防火墙替换为此服务器,运行 Ubuntu 16.04。

除了运行具有大约 900 条规则(过滤器和 nat 结合)的 iptables 之外,它几乎不做任何事。

它所取代的老化服务器运行良好并且没有出现任何问题。

每隔一段时间(可能是每小时一次或每 30 秒一次),新防火墙与 LAN 上任何其他主机之间的延迟就会从 0.1-0.2 毫秒跃升至 10、40、100 甚至 3000 毫秒,持续几秒钟(有时甚至持续几分钟)。我注意到,与 DMZ 中的主机建立 ssh 连接时存在简单的延迟(不应该有任何延迟),然后使用简单的连续、高速率(-i 0.1)ping 测试对各种主机进行测试。

我在 10gbps 接口和其中一个 1gbps 接口上都测试了这一点。服务器远未达到其网络限制(~10Kpps,上传和下载合计 100-400mbps)。CPU 空闲率为 99%

在一次较长的“中断”中,我从互联网连接到防火墙进行调试,我注意到其他任何接口都没有问题,而且所有接口都正常,没有延迟问题。

为了将交换机从方程式中移除,我将 1gbps 接口移至另一个交换机(在我们的堆栈之外),并在新交换机上添加了另一台服务器进行测试。问题仍然存在,我对多台机器进行持续 ping,它们每隔一段时间都会增加 2-3 秒,包括“即时”交换机中的那台。

dmesg 没有显示任何内容,ifconfig 没有显示任何错误,/proc/interrupts 显示所有核心都参与处理 nic(虽然我很确定对于如此低的吞吐量,即使 1 个核心也足够了......)

对于如何调试这种情况的任何建议或想法都将不胜感激。

谢谢!

编辑:添加 ethtool 输出:

eno1 的设置:

Supported ports: [ TP ]
Supported link modes:   10baseT/Half 10baseT/Full
                        100baseT/Half 100baseT/Full
                        1000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full
                        100baseT/Half 100baseT/Full
                        1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: on (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
               drv probe link
Link detected: yes

编辑2:也许这无关紧要,但我在一次(非常长的)中断中确实看到了这一点:

%Cpu(s):  0.1 us,  3.3 sy,  0.0 ni, 95.7 id,  0.0 wa,  0.0 hi,  1.0 si,  0.0 st
KiB Mem : 16326972 total, 14633008 free,   296636 used,  1397328 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 15540780 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
29163 root      20   0       0      0      0 S   8.0  0.0  14:08.45 kworker/4:0
31722 root      20   0       0      0      0 S   7.3  0.0   9:39.76 kworker/6:0
11677 root      20   0       0      0      0 S   5.6  0.0   0:04.65 kworker/3:1
149 root      20   0       0      0      0 S   4.0  0.0  27:21.36 kworker/2:1
46 root      20   0       0      0      0 S   0.3  0.0   0:06.93 ksoftirqd/6

kworker cpu 使用率异常高(通常在 1% 左右)。有什么想法吗?

答案1

我遇到过类似的情况,关联帮助我们解决问题!

本质上,您可能需要将 TCP 套接字接收最大缓冲区大小配置为 2-4mb 之间,如果它不会影响您的服务,则可能甚至更小,因为您有如此多的大幅峰值。

比较以下问题:

  • 大量健康流量看似随机,但出现大量延迟峰值,并且可能会持续很长一段时间。
  • 您已确认问题出在您的新防火墙上。
  • 所有测试数据都表明没有问题。
  • 这是操作系统接收和处理数据包之间的非常偶然、看似随机的延迟。

希望这对你有帮助!

相关内容