从挂起状态唤醒后,我的 Ubuntu 21.04 系统出现网络问题。我猜大约 50% 的 IP 套接字发生了故障。这包括 和 的ssh
失败ping
。我所说的“失败”是指连接尝试被阻止,然后最终超时。 (旁白:也许ping
不使用套接字?)我相信所有尝试网络访问的程序都会遇到相同的失败率。
几个星期以来,我每天晚上都暂停系统。今天是我恢复后第一次出现问题。
我重新启动了系统,这似乎已经解决了问题(至少在它再次发生之前)。
重新启动后,我发现了各种消息syslog
。
我在每次暂停时都会看到以下两行:
Sep 4 09:00:18 hostname kernel: [896165.908582] igc 0000:b0:00.0: no suspend buffer for PTM
Sep 4 09:00:18 hostname kernel: [896165.908589] igc 0000:af:00.0: no suspend buffer for PTM
(旁白:虽然上面的行指的是挂起之前发生的事件,但我相信日志条目只是在系统恢复后创建的。因此,事件实际上发生在指定时间之前的几个小时。)
每份简历上都有两行相同的内容:
Sep 4 09:00:18 hostname kernel: [896166.257107] igc 0000:af:00.0: no suspend buffer for PTM
Sep 4 09:00:18 hostname kernel: [896166.257177] igc 0000:b0:00.0: no suspend buffer for PTM
(旁白:也许有两条线是因为系统有两个内置网卡?)
以下是仅出现在我最近的简历中的日志条目,即网络问题开始时:
Sep 4 09:00:19 hostname kernel: [896168.214463] igc 0000:b0:00.0 enp176s0: Register Dump
Sep 4 09:00:19 hostname kernel: [896168.214467] igc 0000:b0:00.0 enp176s0: Register Name Value
Sep 4 09:00:19 hostname kernel: [896168.214478] igc 0000:b0:00.0 enp176s0: CTRL 081c0641
Sep 4 09:00:19 hostname kernel: [896168.214481] igc 0000:b0:00.0 enp176s0: STATUS 40380401
Sep 4 09:00:19 hostname kernel: [896168.214483] igc 0000:b0:00.0 enp176s0: CTRL_EXT 10000040
Sep 4 09:00:19 hostname kernel: [896168.214486] igc 0000:b0:00.0 enp176s0: MDIC 18017949
Sep 4 09:00:19 hostname kernel: [896168.214488] igc 0000:b0:00.0 enp176s0: ICR 00000001
Sep 4 09:00:19 hostname kernel: [896168.214490] igc 0000:b0:00.0 enp176s0: RCTL 04408022
Sep 4 09:00:19 hostname kernel: [896168.214497] igc 0000:b0:00.0 enp176s0: RDLEN[0-3] 00001000 00001000 00001000 00001000
Sep 4 09:00:19 hostname kernel: [896168.214504] igc 0000:b0:00.0 enp176s0: RDH[0-3] 00000000 00000000 00000000 00000000
Sep 4 09:00:19 hostname kernel: [896168.214511] igc 0000:b0:00.0 enp176s0: RDT[0-3] 000000ff 000000ff 000000ff 000000ff
Sep 4 09:00:19 hostname kernel: [896168.214518] igc 0000:b0:00.0 enp176s0: RXDCTL[0-3] 02040808 02040808 02040808 02040808
Sep 4 09:00:19 hostname kernel: [896168.214525] igc 0000:b0:00.0 enp176s0: RDBAL[0-3] 2e35d000 51576000 337b2000 29a5b000
Sep 4 09:00:19 hostname kernel: [896168.214532] igc 0000:b0:00.0 enp176s0: RDBAH[0-3] 00000001 00000001 00000002 00000001
Sep 4 09:00:19 hostname kernel: [896168.214534] igc 0000:b0:00.0 enp176s0: TCTL a50400fa
Sep 4 09:00:19 hostname kernel: [896168.214541] igc 0000:b0:00.0 enp176s0: TDBAL[0-3] 2e35d000 51576000 337b2000 29a5b000
Sep 4 09:00:19 hostname kernel: [896168.214548] igc 0000:b0:00.0 enp176s0: TDBAH[0-3] 00000001 00000002 00000001 00000001
Sep 4 09:00:19 hostname kernel: [896168.214555] igc 0000:b0:00.0 enp176s0: TDLEN[0-3] 00001000 00001000 00001000 00001000
Sep 4 09:00:19 hostname kernel: [896168.214562] igc 0000:b0:00.0 enp176s0: TDH[0-3] 00000007 00000009 00000004 00000000
Sep 4 09:00:19 hostname kernel: [896168.214568] igc 0000:b0:00.0 enp176s0: TDT[0-3] 0000000d 00000011 00000004 00000001
Sep 4 09:00:19 hostname kernel: [896168.214575] igc 0000:b0:00.0 enp176s0: TXDCTL[0-3] 02100108 02100108 02100108 02100108
Sep 4 09:00:19 hostname kernel: [896168.214576] igc 0000:b0:00.0 enp176s0: Reset adapter
然后有很多(超过 19,000 个)条目,如下所示:
Sep 4 09:01:22 hostname kernel: [896231.189109] igc 0000:b0:00.0 enp176s0: Detected Tx Unit Hang
Sep 4 09:01:22 hostname kernel: [896231.189109] Tx Queue <1>
Sep 4 09:01:22 hostname kernel: [896231.189109] TDH <9>
Sep 4 09:01:22 hostname kernel: [896231.189109] TDT <9>
Sep 4 09:01:22 hostname kernel: [896231.189109] next_to_use <9>
Sep 4 09:01:22 hostname kernel: [896231.189109] next_to_clean <9>
Sep 4 09:01:22 hostname kernel: [896231.189109] buffer_info[next_to_clean]
Sep 4 09:01:22 hostname kernel: [896231.189109] time_stamp <10d596f4c>
Sep 4 09:01:22 hostname kernel: [896231.189109] next_to_watch <000000002b25478e>
Sep 4 09:01:22 hostname kernel: [896231.189109] jiffies <10d59ad90>
Sep 4 09:01:22 hostname kernel: [896231.189109] desc.status <0>
我的问题是,除了完全系统重新启动之外,还有什么方法可以从命令行手动重置/重新启动网络接口?
该系统是一个桌面工作站,所以我可以使用键盘。
重新启动后,我意识到也许我应该尝试重新挂起并重新唤醒系统。但我只是在完全重启后才想到这一点。
答案1
从睡眠中醒来后再次遇到网络错误。这次,我没有重新启动,而是尝试了以下(相当明显)的解决方案:
sudo ifconfig enp176s0 down
sudo systemctl stop systemd-networkd
sudo systemctl start systemd-networkd
我的网络又恢复正常了!
如果您遇到问题:
替换enp176s0
为您的网络接口的名称。
您的网络管理员可能不是systemd-networkd
。
如果您使用图形桌面环境,那么您可以通过桌面工具栏上的菜单简单地禁用然后重新启用网络,而不是上述操作。