在连接的相对侧为发送和接收缓冲区设置不同的值有哪些缺点(或优点)?似乎最有意义(和规范)保持这些值相同。但是,如果一方(比如发送方)有资源将其缓冲区大小加倍,那么它会产生什么影响呢?
我想一个相关的问题是,设置大于所需的缓冲区大小有什么缺点?根据我的阅读,如果发送缓冲区较大,听起来可能会溢出接收缓冲区。此外,只要您的应用程序跟上负载并且可以处理最大大小的消息,似乎可能不需要增加缓冲区大小。它并不一定意味着您可以处理更多的数据吞吐量,因为您仍然受到相反端点的限制。这是对的吗?
有问题的具体内核设置如下:
net.core.wmem_max
net.core.rmem_max
答案 0 :(得分:2)
在某些情况下,较大的缓冲区大小会对性能产生负面影响。如果TCP / IP缓冲区太大而应用程序没有足够快地处理数据,则分页会增加。目标是指定一个足够大的值以避免流量控制,但不要太大以至于缓冲区积累的数据多于系统可以处理的数据
答案 1 :(得分:0)
除非您在TCP情况下传输大量数据,否则这些问题都不重要。在UDP情况下,你不应该尝试发送大于534(或576或任何幻数)的数据报。