一次诡异的服务器网络问题处理


今天,出现一个很奇怪的问题,就是有一台服务器与其他服务器在传输文件的时候,速度只有50KB每秒,而之前则一直是10MB每秒,因为它们所处的网络环境相当于在同一个局域网里面。
鉴于只有这一台服务器有这个问题,因此对网络等一番检测之后,还是决定登录到该服务器上找一找系统方面的原因,最后,我们发现了是服务器网卡的自动协商功能被关闭了,在重新开启了之后,速度就恢复到以前了。

下面是相关的操作日志,供大家参考:
1. 查看 eth0 网络接口的参数信息
# ethtool eth0
----------------------------------------------------------------
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: Not reported
Advertised auto-negotiation: No
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
Supports Wake-on: umbg
Wake-on: g
Current message level: 0x00000003 (3)
Link detected: yes
----------------------------------------------------------------
可以看到网卡的自动协商是关闭的: Auto-negotiation: off

2. 检查 eth0 网络接口的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0
结果发现该配置文件中存在以下一行配置信息:
ETHTOOL_OPTS="speed 100 duplex full autoneg off"
将其注释掉。

3. 开启网卡的自动协商功能
# ethtool -s eth0 autoneg on

4. 检查自动协商功能是否成功开启
# ethtool eth0
--------------------------------------------------------------
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: umbg
Wake-on: g
Current message level: 0x00000003 (3)
Link detected: yes
--------------------------------------------------------------
可以看到网卡的自动协商是开启的: Auto-negotiation: on

5. 检查确认服务器网络传输速度是否恢复
# wget speedtestsa.com/100_MB.BIN (具体需要下载的文件地址请根据实际情况进行设置)
--------------------------------------------------------------
--2011-07-22 01:52:18-- http://speedtestsa.com/100_MB.BIN
Resolving speedtestsa.com... 69.174.244.235
Connecting to speedtestsa.com|69.174.244.235|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 104857600 (100M) [application/octet-stream]
Saving to: `100_MB.BIN.8'
35% [=============================> ] 37,164,108 8.22M/s eta 13s
--------------------------------------------------------------
速度为8.22M每秒,已经成功恢复到了之前的状态。

最后,通过更进一步的了解,发现之所以之前关闭了网卡的自动协商并以强行以百兆模式运行,是想做一些网络方面的优化,但是在托管商更换或更新了交换机设置以后,交换机端的自动协商功能可能会与网卡的百兆模式无法成功匹配,因此造成数据传输问题。
其实这一类优化在目前来说,没有太大的意义,因为大部分的网络环境至少都是百兆,很多都已经是全千兆了。

  1. #1 by ITwhy on 2011/07/23 - 13:47

    嗯,学习了。
    我在工作中还没有遇见这样的问题。

(will not be published)
*