我工作的地方有一台服务器,现在遇到了一个奇怪的问题(如果这很重要的话,它位于 NAT 后面)。问题是,有时它无法访问,然后又恢复,通常在几秒钟内,有时长达 1 分钟。它不会重新启动,也不会崩溃。它只是变得无法访问。在此期间,我无法通过 ssh 进入它,也无法访问机器上运行的任何应用程序(它正在运行几个 Rails 应用程序,因此它们也变得无法访问)。我检查了 dmesg,看到以下几行 -
[ 4.958074] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 5.040476] ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 5.175624] igb: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
[ 5.177207] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
几行之后,我看到了有关网络接口的类似信息 -
[1195777.544167] igb: eth0 NIC Link is Down
[1195780.962943] igb: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
这看起来确实像是一个网络问题。/var/log/messages 没有显示任何有趣的信息。我不确定如何调试它。有什么线索可以知道它是什么吗?我应该在这里检查什么?谢谢!
答案1
此类问题通常不会生成大量日志消息。您发现了两条重要的消息,它们显示接口关闭和打开。拔下以太网电缆并重新插入即可生成这些消息。
可能是 NIC 和路由器之间的电缆有问题。我的第一步(一次完成一步)是:
- 更换连接到 eth0 的电缆,看看是否能解决问题。
- 重新配置网络接口,使当前 eth0 上的流量在 eth1 上,反之亦然。(需要重新启动网络并交换电缆。)如果问题仍然存在,则就像 NIC 出现故障。
- 验证上游设备及其电源的状态。如果断电或出现其他故障,您就会看到这种行为。
- 运行
netstat -i
或ifconfig
检查错误计数。通常,它们应该是 0 或个位数。高载波或帧错误可能表示双工不匹配。可以通过上传然后下载大型文件来验证双工不匹配。速度差异大且错误计数增加表示链路不匹配。有线调制解调器通常具有不同的上传和下载带宽,因此本地传输更适合此测试。
我确实使用的一个工具是mtr
。我使用类似命令mtr -i 15 -n google.com
来监控连接。考虑使用您的 ISP 服务器之一而不是 google.com。它可以批量以报告模式运行。如果问题出在服务器上游,则输出应该有助于识别问题发生的位置。
答案2
BillThor 有一些很好的建议。如果他的解决方案都不能解决问题,那么自动协商可能是罪魁祸首(尽管可能性不大)。尝试强制连接的速度和双工(RedHat 的说明,但其他发行版也类似)
编辑 /etc/sysconfig/network-scripts/ifcfg-eth0:
ETHTOOL_OPTS="speed 100 duplex full autoneg off"
然后重启界面:
/etc/init.d/network restart