eth0 NIC 链接已关闭,在内核日志中重复显示该消息

eth0 NIC 链接已关闭,在内核日志中重复显示该消息

我注意到从几天前开始就出现了同样的重复消息,并且可以肯定地说,在此期间没有任何内容被故意更改(安装/卸载)。

这是示例/var/log/kern.log信息:

Mar 30 06:32:45 aurora kernel: [566322.867110] e1000e: eth0 NIC Link is Down

Mar 30 06:32:47 aurora kernel: [566325.313634] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx

Mar 30 06:32:59 aurora kernel: [566337.632930] e1000e: eth0 NIC Link is Down

Mar 30 06:33:18 aurora kernel: [566356.543664] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

Mar 30 11:05:47 aurora kernel: [582689.779752] e1000e: eth0 NIC Link is Down

Mar 30 11:05:50 aurora kernel: [582692.174337] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx

从完整的日志文件 - 当将所有此类日志消息都考虑进去时 - 我可以得出结论:

  • eth0 每隔几个小时就会出现故障
  • eth0 在第一种情况下失败了 2 秒,在第二种情况下失败了 19 秒

我在这里谈论的是生产服务器。

如何解决这个问题,因为邮件服务器正在生产中并且我无法容忍持续 19 秒的网络故障?

答案1

  1. 检查线路上的错误,查看 输出中的“errors”字段ifconfig。如果非零,则表示硬件存在问题(电缆、NIC 卡或集线器/交换机)。不可靠的以太网电缆也会在此字段中产生错误。
  2. 无论步骤 1 如何,都应更换以太网电缆。此操作快速、便宜且简单,并且应该在您的链路随机出现启动和停止的情况时进行。
  3. 使用ethtool并确保网络设置(双工等)与交换机上的设置相匹配。如果您不是交换机的管理员,请让网络管理员为您提供设置。
  4. 如果交换机启用了流量控制,则确保在 Linux 机器上也启用了流量控制。否则,请禁用它。

附注:你应该评估是否需要流量控制。根据 HP 的说法,只有高性能应用程序才需要流量控制:请参阅HP 文章:何时使用流量控制

答案2

以下是我的解决方法。此问题发生在特定硬件上(一台机器上只有 2 个 NIC 端口中的 1 个),始终使用 e1000e 驱动程序,从内核 3.9 左右开始。此文件适用于 centos7,/etc/init.d/必须使用 才能进入并启用chkconfig --add <name>。接口名称是硬编码的...请务必设置它。

#!/bin/sh

### BEGIN INIT INFO
# Provides:          pm-e1000e-fix
# Required-Start:    $network
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 6
# Short-Description: workaround for e1000e issue
# Description:       e1000e fix
### END INIT INFO

################################################################################
# Give Usage Information                                                       #
################################################################################
usage() {
    echo "Usage: $0 start|restart" >&2
    exit 1
}

################################################################################
# E X E C U T I O N    B E G I N S   H E R E                                   #
################################################################################
command="$1"
shift

interface="eth0"

case "$command" in
    start)
        ethtool -K "$interface" gso off gro off tso off
        ;;
    restart)
        ethtool -K "$interface" gso off gro off tso off
        ;;
    *)
        usage
        ;;
esac

相关内容