我知道可以使用找到数据报队列长度的最大长度 “cat / proc / sys / net / unix / max_dgram_qlen”。
我想知道如何找到启动时设置的默认值(例如发送缓冲区大小的/ proc / sys / net / core / wmem_default)。
是否可以增加max_dgram_qlen的值?同样的上限是多少?
我的内核版本是2.6.27.7。我是Unix域套接字编程(AF_UNIX)的新手。
提前感谢任何评论/解决方案!
答案 0 :(得分:5)
以前的答案/评论未能理解OP是在讨论数据报(max_dram_qlen)中的最大队列长度而不是字节。操作系统提供两种设置的设置。
您可以使用以下命令设置max_dgram_qlen
:
sysctl net.unix.max_dgram_qlen=128
您可能需要使用sudo
运行,并且您可能还需要在max_dgram_qlen=128
周围加上双引号,具体取决于您的shell。
另请参阅What's the practical limit on the size of single packet transmitted over domain socket?。
答案 1 :(得分:0)
man unix(7):
SO_SNDBUF套接字选项对UNIX域套接字有效,但SO_RCVBUF选项不起作用。对于数据报套接字,SO_SNDBUF值对传出数据报的大小施加了上限。此限制计算为doubled(请参阅socket(7))选项值减去用于开销的32个字节。