我刚刚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 链接速度:
连接配置:带有转发端口的公共静态 IPv4。
为了完整起见,让我也提一下其他组件,我不知道这些信息在这里是否重要,所以......
- 服务器:戴尔 PowerEdge T20
- 中央处理器:英特尔至强 E3-1225v3 3.2GHz 4C/4T
- 内存:32 GiB ECC DDR3
- 系统驱动器:SSD
答案1
下列的这篇旧文章帮助了。我先提一下所声称的解决方案:
以 root 身份打开此文本文件,请注意它是重要的系统文件之一:
/etc/sysctl.conf
另一种选择是创建一个新的配置文件来保存要覆盖的参数,但这个问题本身并不是关于如何进行配置,因此我们直接解决这个问题。
我添加这两行是因为我有足够的内存;例如,如果您在嵌入式系统上,您可能需要重新考虑应用这些行(我们为接收缓冲区设置 16 MiB,为发送缓冲区设置 4 MiB),我还无法说出实际的运行内存需求:
net.core.rmem_max = 16777216 net.core.wmem_max = 4194304
如果您决定添加上面的这些行,您可以使用以下命令重新读取配置:
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