Debian

傳輸守護程序:UDP 無法設置接收/發送緩衝區

  • December 15, 2021

我剛剛在我的 Debian 10 Buster 上編譯了transmission{-daemon,-cli}它,並安裝了一些小問題和大問題。

其中一個小問題是明顯未能根據日誌設置 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. 以 root 身份打開此文本文件,注意它是那些重要的系統文件之一:
/etc/sysctl.conf

另一種選擇是創建一個新的配置文件來保存要覆蓋的參數,但這個問題本身並不是關於如何進行配置,因此我們直接解決了這個問題。 2. 我添加了這兩行,因為我有足夠的記憶體;例如,如果您在嵌入式系統上,您可能需要重新考慮應用這些行(我們為接收緩衝區設置 16 MiB,為發送緩衝區設置 4 MiB),我還不能告訴實際執行記憶體要求:

net.core.rmem_max = 16777216
net.core.wmem_max = 4194304
  1. 如果您決定在上面添加這些行,則可以使用以下命令重新讀取配置:
sysctl -p

無需重啟即可生效。


現在,讓我在此引用該網頁:

該消息試圖告訴我們,出於某種原因,Transmission 希望為其 UDP 套接字提供 4 兆字節的接收緩衝區和 1 兆字節的發送緩衝區。事實證明,對 µTP(µTorrent 傳輸協議)的支持是使用單個套接字實現的。

通過調整這兩個變數,使用 µTP 可以更輕鬆地實現更高的吞吐量。


由於我們使用單個 UDP 套接字來實現多個 µTP 套接字,並且由於我們並不總是及時地為傳入的 UDP 數據包提供服務,因此使用大的接收緩衝區很重要。發送緩衝區可能不太重要,但我們還是增加了它。

引用自:https://unix.stackexchange.com/questions/520625