发送队列0超时后,以太网连接随机断开连接

问题描述:

以太网连接在没有任何理由的情况下随意断开连接。 我尝试了以下命令来重启我的以太网连接,

sudo service network-manager restart 

虽然它从未解决过这个问题。 每次我必须重新启动系统才能恢复连接。

我的以太网卡的详细信息:

 $ lspci -nnk | grep -iA2 net 06:00.0 Network controller [0280]: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) [168c:002b] (rev 01) Subsystem: Lenovo Device [17aa:30a1] Kernel driver in use: ath9k
07:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02) Subsystem: Lenovo Device [17aa:392e] Kernel driver in use: r8169

我的系统:联想ideapad z560上的Ubuntu 14.04 LTS 64bit。

观察:当我在Skype或环聊中进行调用时,它会更频繁地发生。 似乎大量使用以太网导致断开连接。

到目前为止尝试调试步骤:

我发现有线网络在ubuntu中不稳定13.04(64位)有类似我的问题描述,但不完全一样。 根据该post中给出的解决方案,我安装并尝试使用较旧的内核linux-image-3.5.0-27-generic 。 但同样的问题仍然存在。

同时我不确定它是否是硬件相关问题,因为我之前使用的Windows 7从未发生过这种情况。 我做了很多谷歌搜索,但除了一些关于旧版本和错误报告之外,找不到解决方案。

作为调查dmesg [感谢@noleti]的提示,我发现了以下内容:

 $ dmesg -T |  grep eth0
 [2015年5月2日星期六19:52:37] r8169 0000:07:00.0:eth0:RTL8102e位于0xffffc90000348000,88:ae:1d:3a:ec:ff,XID 04e00000 IRQ 41
 [2015年5月2日星期六19:52:45] IPv6:ADDRCONF(NETDEV_UP):eth0:链接未准备好
 [2015年5月2日星期六19:52:51] r8169 0000:07:00.0:eth0:链接下来
 [2015年5月2日星期六19:52:51] IPv6:ADDRCONF(NETDEV_UP):eth0:链接未准备好
 [2015年5月2日星期六19:52:51] IPv6:ADDRCONF(NETDEV_UP):eth0:链接未准备好
 [2015年5月2日星期六19:52:56] r8169 0000:07:00.0:eth0:链接起来
 [2015年5月2日星期六19:52:56] IPv6:ADDRCONF(NETDEV_CHANGE):eth0:链接准备就绪
 [2015年5月2日星期六20:09:01] NETDEV WATCHDOG:eth0(r8169):传输队列0超时
 [2015年5月2日星期六20:09:01] r8169 0000:07:00.0:eth0:链接起来
 [2015年5月2日星期六20:09:13] r8169 0000:07:00.0:eth0:链接起来
 [2015年5月2日星期六20:09:19] r8169 0000:07:00.0:eth0:链接起来
 [2015年5月2日星期六20:09:31] r8169 0000:07:00.0:eth0:链接起来
 [2015年5月2日星期六20:10:13] r8169 0000:07:00.0:eth0:链接起来
 [2015年5月2日星期六20:10:55] r8169 0000:07:00.0:eth0:链接起来
 [2015年5月2日星期六20:12:07] r8169 0000:07:00.0:eth0:链接起来
 [2015年5月2日星期六20:13:49] r8169 0000:07:00.0:eth0:链接起来

dmesg输出中显示的事件之后,我的连接丢失了。

 NETDEV WATCHDOG: eth0 (r8169): transmit queue 0 timed out 

首先,我尝试用r8168取代r8169 ,这对于许多拥有Realtek Ethernet Controller用户来说恰好是一个错误,但是从来没有解决过这个问题,即使现在发布这个问题差不多一年了。 即使使用最新的内核更新4.2.0-30-generic我也面临同样的问题。

解:

用一个稳定的旧内核版本替换当前内核,在我的例子中,我在14.04 LTS手动安装了内核版本3.2.0-83-generic 。 现在以太网连接稳定,问题解决了。

从1,2,3,4下载以下.deb软件包并安装它:

 sudo dpkg -i linux-headers-3.2.0-83_3.2.0-83.120_all.deb sudo dpkg -i linux-headers-3.2.0-83-generic_3.2.0-83.120_i386.deb sudo dpkg -i linux-image-3.2.0-83-generic_3.2.0-83.120_i386.deb 

您可以通过编辑/etc/default/grub GRUB_DEFAULT=0来更改引导顺序, GRUB_DEFAULT=0 处所示 。 然后

 sudo update-grub sudo reboot 

我想你可以尝试安装其他最新的v3.2内核,这些内核也可能很稳定,例如: 3.2.0-98-generic

注意:我已经测试了32位和64位Ubuntu 14.04 LTS

可能你可以尝试限制以太网适配器的速度? 尝试:

 sudo ethtool -s eth0 speed 100 duplex half 

或者,如果这没有帮助,请尝试https://unix.stackexchange.com/questions/37727/solving-ethernet-watchdog-timer-deadlocks

dmesg -T | grep eth0 dmesg -T | grep eth0输出,你正在使用r8169驱动程序已经不稳定少数网卡尝试手动降级驱动程序到r8168

希望这可以帮助