目前我达到了 130688 字节的硬限制。如果我尝试在一条消息中发送更大的内容,我会收到ENOBUFS
错误消息。
我检查了net.core.rmem_default
, net.core.wmem_default
, net.core.rmem_max
,net.core.wmem_max
和net.unix.max_dgram_qlen
sysctl 选项并增加了它们,但它们没有效果,因为它们处理的是总缓冲区大小而不是消息大小。
我还设置了SO_SNDBUF
和SO_RCVBUF
套接字选项,但这与上面的问题相同。无论如何,默认套接字缓冲区大小都是基于默认套接字选项设置的。
我查看了在ENOBUFS
套接字堆栈中返回的内核源代码,但我不清楚它来自哪里。似乎返回此错误的唯一地方与无法分配内存有关。
最大尺寸实际上是 130688 吗?如果不能,是否可以在不重新编译内核的情况下进行更改?