Dns
執行“systemd-resolve –status”時“無法獲取全域數據:沒有可用的緩衝區空間”
我在 Mint 20.3(基於 Ubuntu 20.04)上,我一直遇到這個奇怪的問題,我的網路一切正常,然後突然,顯然出乎意料,它停止工作,我無法訪問任何網站。這不是我的瀏覽器,因為使用
curl
.我找到了一個執行緒,提到使用
systemd-resolve --status
來獲取 DNS 的目前狀態。當網路正常時,該命令執行良好,我保存了一份副本以與網路播放時的輸出進行比較。但是,現在網路再次啟動,我再次執行命令並輸出錯誤:
Failed to get global data: No buffer space available
. 我一直在尋找解決方案,但似乎沒有提及systemd-resolve
,所以我不知道發生了什麼。這個答案給了我一些希望,但是我將緩衝區大小增加到提到的兩倍,但沒有任何效果。
請問有人有什麼想法嗎?
它來自這部分原始碼:
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。也許它以某種方式停止、崩潰或卡住了。