传输守护进程:UDP 无法设置接收/发送缓冲区

传输守护进程:UDP 无法设置接收/发送缓冲区

我刚刚transmission{-daemon,-cli}在我的 Debian 10 Buster 上编译了它,并安装了它,但遇到了一些小问题和大问题。

其中一个小问题是明显未能根据日志设置 UDP 接收缓冲区/发送缓冲区:

[2019-05-23 12:45:40.950] UDP Failed to set receive buffer: requested 4194304, got 425984 (tr-udp.c:84)
[2019-05-23 12:45:40.950] UDP Please add the line "net.core.rmem_max = 4194304" to /etc/sysctl.conf (tr-udp.c:89)
[2019-05-23 12:45:40.950] UDP Failed to set send buffer: requested 1048576, got 425984 (tr-udp.c:95)
[2019-05-23 12:45:40.950] UDP Please add the line "net.core.wmem_max = 1048576" to /etc/sysctl.conf (tr-udp.c:100)

我希望客户向我展示其最大性能,所以我很好奇如何在我的系统上调整这两个东西,这是它建议的? 4 on 1 MiB 对我来说似乎没什么,但由于我不是网络专家,请详细说明,如果我可以将其调整到更高的数字。


硬件

ISP 链接速度:

约 30 / 25

连接配置:带有转发端口的公共静态 IPv4。


为了完整起见,让我也提一下其他组件,我不知道这些信息在这里是否重要,所以......

答案1

下列的这篇旧文章帮助了。我先提一下所声称的解决方案:

  1. 以 root 身份打开此文本文件,请注意它是重要的系统文件之一:

    /etc/sysctl.conf
    

    另一种选择是创建一个新的配置文件来保存要覆盖的参数,但这个问题本身并不是关于如何进行配置,因此我们直接解决这个问题。

  2. 我添加这两行是因为我有足够的内存;例如,如果您在嵌入式系统上,您可能需要重新考虑应用这些行(我们为接收缓冲区设置 16 MiB,为发送缓冲区设置 4 MiB),我还无法说出实际的运行内存需求:

    net.core.rmem_max = 16777216
    net.core.wmem_max = 4194304
    
  3. 如果您决定添加上面的这些行,您可以使用以下命令重新读取配置:

    sysctl -p
    

无需重启即可生效。


现在,让我引用该网页:

此消息试图告诉我们,出于某种原因,Transmission 希望为其 UDP 套接字拥有 4 MB 的接收缓冲区和 1 MB 的发送缓冲区。事实证明,对 µTP(µTorrent 传输协议)的支持是使用单个套接字实现的。

通过调整这两个变量,使用 µTP 可以更轻松地实现更高的吞吐量。


由于我们使用单个 UDP 套接字来实现多个 µTP 套接字,并且由于我们并不总是及时为传入的 UDP 数据包提供服务,因此使用较大的接收缓冲区非常重要。发送缓冲区可能不太重要,但我们还是增加了它。

答案2

回答的解决方案工作正常,但在系统您必须将这些行写入:

/etc/sysctl.d/<anyname>.conf

然后,执行(以 root 身份):

systemctl restart systemd-sysctl

相关内容