我使用的是 Mint 20.3(基于 Ubuntu 20.04),我一直遇到这个奇怪的问题,我的网络一切正常,然后突然之间,显然出乎意料的是,它停止工作,我无法访问任何网站。这不是我的浏览器,因为使用时也会发生同样的情况curl
。
我发现一个线程提到使用systemd-resolve --status
来获取 DNS 的当前状态。当网络正常时,该命令运行良好,我保存了一个副本以与网络运行时的输出进行比较。
但是,现在网络再次运行,我再次运行该命令,输出是一个错误:Failed to get global data: No buffer space available
。我已经寻找了解决方案,但似乎没有提到任何内容systemd-resolve
,所以我对发生的事情感到茫然。
这个答案给了我一些希望,但我将缓冲区大小增加到所提到的两倍,但没有效果。
请问有人有什么想法吗?
答案1
它来自这部分源代码:
resolve/resolvectl.c
1843
1844 r = bus_map_all_properties(bus,
1845 "org.freedesktop.resolve1",
1846 "/org/freedesktop/resolve1",
1847 property_map,
1848 BUS_MAP_BOOLEAN_AS_BOOL,
1849 &error,
1850 &m,
1851 &global_info);
1852 if (r < 0)
1853 return log_error_errno(r, "Failed to get global data: %s", bus_error_message(&error, r));
1854
我检查了在什么情况下 systemd 会报告 ENOBUFS,并且当您填满 DBUS 的挂起发送或接收缓冲区时,您似乎只会收到此错误。
底层错误 ( ENOBUFS
) 发生在 DBUS 内部库请求中。
它是一个内部缓冲区,您无法增加其大小,但这无疑表明 DBUS(或底层库)已停止响应请求,直到内部缓冲区已填满并且放弃向其中添加更多数据,ENOBUFS
而是返回。
我会考虑检查您的 systemd DBUS。也许它停止了、崩溃了或者以某种方式卡住了。