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

我有一个间歇性问题(在使用不同的连接一段时间后自然解决)导致Internet请求失败,使用一个特定的无线网络。 在与AP关联后约5个请求之后, ping将报告错误

 ping: sendmsg: No buffer space available 

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

如果它是相关的,我在Thinkpad X201上看到了Centrino Ultimate-N 6300 [8086:4238]无线接口。 Bug#836250可能相关。

虽然我可以解决这个问题,但我想知道: 这个错误消息是什么意思? 特别是,它在谈论什么缓冲?

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

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


如果有人想知道:存储这些文件的文件是/etc/sysctl.conf ,你可以从root (!)提示符改变它们。 这里可以找到一些示例 (还包括本答案开头所示的参数)。 但是,只有在更换NIC本身无法解决问题时才应该这样做。

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

我有一个3g调制解调器(USB调制解调器)的类似问题。 当使用不同的调制解调器,同一品牌时,问题就消失了。 每当我使用有缺陷的调制解调器它工作了一段时间然后开始失败并出现相同的症状,几天后调制解调器完全断开,我终于更换它,问题彻底解决了。