“ping:sendmsg:没有可用的缓冲区空间”是什么意思?

“ping:sendmsg:没有可用的缓冲区空间”是什么意思?

我遇到了一个间歇性问题(使用其他连接一段时间后会自动解决),导致某个特定无线网络的互联网请求失败。与 AP 关联后大约 5 次请求后,ping会报告错误

ping: sendmsg: No buffer space available

就像Wifi 已连接但没有数据传输:“ping:sendmsg:没有可用的缓冲区空间”

如果有相关的话,我正在查看Centrino Ultimate-N 6300 [8086:4238]Thinkpad X201 上的无线接口。错误 #836250可能相关。

虽然我可以解决这个问题,但我想知道:这个错误信息是什么意思?具体来说,它谈论的是什么缓冲区?

答案1

这意味着您已达到系统参数的最大值。可能/proc/sys/net/core/wmem_max(但可能需要对显示此错误的系统进行一些调查)。此设置是“接收套接字内存”的最大量。

如果系统压力不大,则原因可能是 NIC 损坏或 NIC 未 100% 支持。Broadcom bcm4313 似乎是显示此错误的一个。


以防有人想知道:存储这些内容的文件是/etc/sysctl.conf,您可以从root(!)提示中更改它们。这里有示例(还包括本答案开头所示的参数)。但只有在更换网卡本身无法解决问题时才应这样做。

答案2

我的笔记本电脑也遇到了同样的问题戴尔XPS使用 Linux 5.3.0-42 Ubuntu 18.04.3 LTS。使用时ping 8.8.8.8出现以下错误:

ping: sendmsg: No buffer space available

网上有多种来源建议增加wmem_max使用:

echo 83886080 | sudo tee /proc/sys/net/core/wmem_max

但我没有解决这个问题,过了一会儿,我只是把路由器的无线模式改成了

802.11 b/g/n mixed

此外,我禁用路由器中的 5 GHz,可能收费过高。

所有这些都解决了我的问题。

编辑:或者,如果您不想禁用 5G,您可以从 wifi 配置中设置 5G 或 2.4G 之间的相关 wifi 通道,只需转到 Wifi 网络设置,选择您的网络,然后在“身份”选项卡中更改 BSSID,您应该会发现 2 个 BSSID,一个是 2.4GHZ,另一个是 5G。

答案3

这可能是驱动程序或硬件本身的问题。可以通过打开/关闭接口来暂时修复。基本上,输出队列已满,除非您正在处理一些主要网络流量或网络上有大量主机,否则您不应该看到该错误,如果是这样,您可能可以调整一些内核值来防止错误。

答案4

我发现此消息可能是由本地网络上某处的网络设备故障引起的,不一定是您的计算机上的故障。

例如,当我在 Ubuntu 20.04 上 ping 192.168.1.1 的本地路由器时,收到了此消息。同时,当该消息出现时,互联网流量中断。

$ ping 192.168.1.1
...
64 bytes from 192.168.1.1: icmp_seq=216 ttl=64 time=0.295 ms
64 bytes from 192.168.1.1: icmp_seq=217 ttl=64 time=0.350 ms
ping: sendmsg: No buffer space available
ping: sendmsg: No buffer space available
...
$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
From 192.168.1.8 icmp_seq=10 Destination Host Unreachable
...

拔掉用于其他笔记本电脑电脑从以太网端口在同一网络上交换机(TP-Link)上,我的 Ubuntu 机器插在那里。笔记本电脑在此期间处于关闭状态。我能够多次复制该问题。在我再次插入 ATZEBE 后一分钟左右,问题再次出现。路由器中还有许多其他设备,但只有移除 ATZEBE 才能解决问题。否则,以太网交换机也可能是嫌疑犯。

如前所述,该消息与系统参数有关。你可以这样阅读:

$ cat /proc/sys/net/core/wmem_max
212992

由于对于简单的 ping 来说该值相当大,因此我怀疑要么是故障硬件向网络发送垃圾邮件并导致缓冲区溢出,要么是系统正在通过误导性消息处理问题情况。

相关内容