突发情况下数据包丢失率非常高

突发情况下数据包丢失率非常高

我们的服务器有时会出现 90% 以上的数据包丢失,但这种情况并不总是会发生。目前它运行正常,但就在半小时前,它出现了同样的问题。

我们的服务提供商告诉我们要使用恢复系统来测试这是否真的是硬件问题而不是我们这边的软件问题。但是,我没有看到任何可能导致我们这边数据包丢失的东西,尤其是当它不一致时。

在对恢复系统进行其他测试之前,我们可以检查什么吗?

我们在 Hetzner.de 有一个专用服务器。它连接到 100MBit 以太网。我们没有尝试在硬件方面进行任何更改,因为我们的服务器提供商希望我们在继续检查硬件之前先检查软件。

这是我制作的 mtr 报告。报告期间,我们出现了 3 次数据包丢失,其余时间服务器均可访问:

客户端到服务器

HOST: mbp                         Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 10.0.1.1                   0.0%  1000    0.4   0.2   0.2   3.4   0.2
  2.|-- 10.0.1.1                   0.3%  1000   27.5  29.7   5.9 237.3  34.6
  3.|-- 10.170.172.121             0.4%  1000   17.2  41.9   7.2 334.1  44.2
  4.|-- 216.113.123.158            1.4%  1000   44.4  58.6  10.6 299.6  49.2
  5.|-- 216.113.123.194            1.1%  1000   36.6  72.9  19.4 330.7  48.1
  6.|-- paix-nyc.init7.net         0.7%  1000   57.1  75.8  18.4 313.8  49.1
  7.|-- r1lon1.core.init7.net      1.4%  1000  199.8 150.9  87.1 373.7  56.4
  8.|-- r1fra1.core.init7.net      0.6%  1000  244.2 150.1  98.6 438.6  53.6
  9.|-- gw-hetzner.init7.net       1.4%  1000  175.3 140.6 100.5 397.2  49.7
 10.|-- hos-bb2.juniper2.rz16.het 39.0%  1000  120.0 136.7 103.5 362.6  44.3
 11.|-- hos-tr4.ex3k13.rz16.hetzn  0.8%  1000  145.4 132.2 106.8 393.3  36.9
 12.|-- static.98.43.9.5.clients. 39.8%  1000  116.0 131.5 106.1 371.8  34.4

服务器到客户端

HOST: thetransitapp               Loss%   Snt   Last   Avg  Best  Wrst StDev
  1. static.97.43.9.5.clients.you 29.0%  1000    7.2   7.4   0.9  24.9   1.9
  2. hos-tr1.juniper1.rz16.hetzne 38.7%  1000    6.1   9.6   0.2  78.8   7.6
  3. hos-bb2.juniper4.ffm.hetzner 36.2%  1000   11.8  11.4   5.8  29.0   1.5
  4. r1fra1.core.init7.net        38.1%  1000   12.4  13.9   5.5  22.9   3.9
  5. r1lon1.core.init7.net        36.3%  1000   23.5  26.5  17.6  37.6   4.4
  6. r1nyc1.core.init7.net        35.5%  1000   92.3  93.8  86.1 103.0   3.7
  7. paix-ny.ia-unyc-bb05.vtl.net 35.5%  1000   95.5  96.4  87.6 134.7   5.3
  8. 216.113.123.169              36.3%  1000  101.5 102.0  94.4 124.9   3.6
  9. 216.113.124.42               34.7%  1000  113.1 107.7  96.7 117.6   3.6
 10. 216.113.123.157              37.5%   999  106.5 107.4 101.5 115.0   1.5
 11. ???                          100.0   999    0.0   0.0   0.0   0.0   0.0
 12. modemcable004.103-176-173.mc 36.7%   999  111.2 147.9 107.2 342.0  48.3

这是以太网配置

Settings for eth0:
    Supported ports: [ TP MII ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Half 1000baseT/Full 
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Half 1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Link partner advertised link modes:  10baseT/Half 10baseT/Full 
                                         100baseT/Half 100baseT/Full 
                                         1000baseT/Full 
    Link partner advertised pause frame use: No
    Link partner advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: MII
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000033 (51)
    Link detected: yes

eth0的ifconfig:

eth0      Link encap:Ethernet  HWaddr c8:60:00:bd:2f:9d  
          inet addr:5.9.43.98  Bcast:5.9.43.127  Mask:255.255.255.224
          inet6 addr: fe80::ca60:ff:febd:2f9d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3521 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2117 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2882770 (2.7 MiB)  TX bytes:910907 (889.5 KiB)
          Interrupt:30 Base address:0x8000 

答案1

我认为这是 hetzner 的错。关于类似的案件,我已经与他们争论了很长时间。

我们遇到了这些问题,并向托管公司报告了这个问题。答案总是相同的 - “请将 mtr 连接到两个方向” - 即使在故障期间他们也会这样回答。所以我们确实编写了一个守护进程,每次服务器之间出现任何数据包丢失时都会启动 mtr:

如果 [ -z $1 ] ; 那么
                echo “给出目标主机”
别的
                主机=$1
                while true ; 执行
                                损失 =`ping -c 10 $host | grep 数据包 | awk {'打印 $6'} | sed s/%//g`
                                如果 [ $loss -ge 1 ]; 那么
                                                echo `日期` >> /root/scripts/loss_measure_mtr.log
                                                mtr -s 1500 -r -c 1000 -i 0.1 $host >> /root/scripts/loss_measure_mtr.log

                完毕


然后他们根据这些信息回答道:

此时子网中发生了传入攻击。在这种情况下
同一子网内的服务器可能发生数据包丢失。

此致

迈克尔·斯特雷茨

Hetzner 在线股份公司
支持
90431 纽伦堡 / 德国
电话:+49 (911) 234 226 54
传真:+49 (911) 234 226 8 977
http://www.hetzner.de

到底发生了什么?我不知道,但看起来几乎一样:

2012 年 8 月 12 日 星期日 01:13:20 CEST
主机:应用程序损失率 Snt 最后平均值 最佳 Wrst 标准差
  1. 94.1% 1000 0.2 0.2 0.1 0.4 0.1
  2. 静态.1.24.24.46.客户端.您 0.0% 1000 3.0 1.9 0.7 19.4 1.5
  3. hos-tr4.juniper2.rz13.hetzne 9.4% 1000 0.6 1.9 0.4 133.2 8.0
  4. hos-bb2.juniper1.rz1.hetzner 5.4% 1000 38.6 7.1 3.0 112.9 11.5
  5. hos-tr1.ex3k3.rz1.hetzner.de 10.9% 1000 4.4 5.1 3.6 23.6 1.8**
  6. 静态.88-128-24-108.客户端 15.5% 1000 3.6 3.5 3.4 4.6 0.1
主机:应用程序损失率 Snt 最后平均值 最佳 Wrst 标准差
  1. 94.5% 1000 0.2 0.2 0.1 0.6 0.1
  2. 静态.1.24.24.46.客户端.您 0.0% 1000 1.2 1.9 0.7 19.3 1.6
  3. hos-tr4.juniper2.rz13.hetzne 9.3% 1000 0.6 1.8 0.4 136.8 7.9
  4. hos-bb2.juniper1.rz1.hetzner 2.7% 1000 3.3 7.0 3.0 113.1 11.5
  5. hos-tr1.ex3k3.rz1.hetzner.de 8.5% 1000 7.0 5.1 3.6 26.8 2.0
  6. 静态.88-128-24-108.客户端 12.8% 1000 3.6 3.5 3.3 4.5 0.1

我有几十个这样的mtr。

我认为是他们的基础设施问题。请注意节点上发生了丢失:hos-tr1.ex3k3.rz1.hetzner.dehos-tr4.juniper2.rz13.hetzner.de等等。

如果他们不解决这个问题,我可能会迁移到 linode 或 amazon。

答案2

这不是一个答案,但它太长了,无法作为评论,因此我将其作为答案发布。

我不完全同意现有答案中的评估和对这个问题的一些评论。

使用任何通过 ping 和 traceroute 使用 ICMP 的工具(如果我理解它的工作原理的话,比如 mtr)的问题在于,该工具正在测试路径中的每一跳如何响应 ICMP 流量,这意味着测试被发送到每一跳,然后测量该跳的响应。这不是对路径中每一跳的路径质量的真正测试,这意味着它没有测试通过路径的“真实”流量的传输。每一跳都可能选择为基于 ICMP 的测试提供低优先级,或者它可能完全放弃它,因此从一跳到下一跳的结果会有所不同。如果您在第 10 跳处遇到真正的问题(在您的第一个屏幕截图中),那么该问题将延续(并累积)在每个连续的跳跃中。正如您在屏幕截图中看到的那样,第 10 跳显示 39% 的数据包丢失,但第 11 跳几乎没有显示数据包丢失。如果第 10 跳真的丢弃了“真实”流量,那么问题也会在跳 11 跳处出现。事实上,跳 11 可能会显示更多的数据包丢失(跳 10 处的丢失、跳 10 和 11 之间的链路上的丢失以及跳 11 处的丢失的累计)。

您应该做的是使用从一端到另一端发送真实流量的工具(如 iperf)进行测试。

相关内容