从挂起唤醒后,我的 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>
我的问题是,除了完全重新启动系统之外,还有什么方法可以从命令行手动重置/重新启动网络接口?
该系统是一个桌面工作站,所以我可以使用键盘。
重新启动后,我意识到也许我应该尝试重新挂起并重新唤醒系统。但我只是在完全重启后才想到这一点。
我从睡眠中醒来后再次遇到网络错误。这一次,我没有重新启动,而是尝试了以下(相当明显)的解决方案:
我的网络又开始工作了!
如果遇到问题:
替换
enp176s0
为您的网络接口的名称。您的网络管理员可能不是
systemd-networkd
.如果您使用图形桌面环境,那么您可以通过桌面工具栏上的菜单简单地禁用然后重新启用网络,而不是上述环境。