Skip to content
View in the app

A better way to browse. Learn more.

PHP论坛人

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Debian 13 啟用 BBR 加速 + 網路效能優化

Featured Replies


-----------
前言
-----------

本文旨在透過啟用Google BBR擁塞控制演算法,搭配一系列核心網路參數調校,最大化伺服器的網路傳輸效率與連線處理能力


適合以下使用情境:

高延遲、高封包遺失率的網路環境 (如跨國傳輸、衛星網路)

VPS、雲端主機、CDN節點、遊戲伺服器

高併發連線的Web服務、反向代理、資料庫主從同步


雲端平台注意:AWS、GCP、Azure 等雲端平台可能已預設啟用BBR或使用自訂的擁塞控制演算法。建議先確認現有設定,再決定是否覆蓋



-----------------
什麼是BBR?
-----------------

BBR (Bottleneck Bandwidth and Round-trip propagation time) 是由Google開發的TCP擁塞控制演算法,首次併入Linux 核心 4.9版 (2016年)

相較於傳統的 CUBIC 演算法,BBR的核心差異在於:CUBIC以「封包遺失」作為壅塞信號被動反應,BBR則主動探測「可用頻寬」與「最小 RTT」

因此在封包遺失率較高或延遲較大的環境下,仍能維持相對穩定的吞吐量


適合啟用BBR的場景:

跨國或跨洲的遠距離連線

高延遲網路 (如衛星連線、行動網路回程)

VPS伺服器對外提供服務

需要大量資料傳輸的應用 (備份、影音串流、大型檔案傳輸)

補充說明:BBR 對「上行頻寬受限」的場景效益最為明顯。若你的伺服器主要作為靜態網站或僅有少量連線,BBR帶來的提升幅度可能不那麼顯著,但開啟也無害




雖然Debian 13的核心版本已原生支援BBR,但我們仍需確認環境

uname -r


應返回 6.12.88+deb13-cloud-amd64



核心版本需 ≥ 4.9 才支援 BBR。Debian 13預設核心通常為 6.1.x 或更高,完全符合需求


-----------------------------------
確認目前使用的擁塞控制演算法
-----------------------------------

在進行任何變更前,先記錄現有設定以利未來對比或復原


sysctl net.ipv4.tcp_congestion_control


sysctl net.core.default_qdisc





-------------------------------------------
建立 啟用BBR設定檔 + 網路優化設定檔
-------------------------------------------

建議在 /etc/sysctl.d/ 目錄下建立 獨立設定檔,而非直接修改 /etc/sysctl.conf。好處是:

模組化管理,易於維護或回滾

系統升級時不易被覆蓋

數字前綴 99 確保此設定在所有同目錄設定檔中最後載入,優先級最高

建立

vi /etc/sysctl.d/99-network-optimization.conf

99-network-optimization.conf.txt

貼上以下內容

儲存檔案並離開vi編輯器

按 Esc,輸入 :wq,按 Enter

------------------
套用設定
------------------

即時套用
sysctl -p /etc/sysctl.d/99-network-optimization.conf


若無任何錯誤輸出,表示設定已成功套用

若看到類似 No such file or directory 或 Invalid argument,請檢查對應參數名稱是否有拼寫錯誤



注意:tcp_tw_recycle 在 Linux 4.12 後已從核心移除

若你的核心版本為 4.12 以上 (Debian 13 完全符合)

套用時可能出現 sysctl: setting key "net.ipv4.tcp_tw_recycle": No such file or directory 的警告

此為正常現象,該行可直接從設定檔刪除或註解掉




---------------
永久生效
---------------

設定檔放置於 /etc/sysctl.d/ 目錄下,系統重啟後會自動載入,無需額外操作

若想手動重新套用全部 sysctl 設定 (例如測試時):

sysctl --system



---------------------
重開機,再次驗證
---------------------

重開機
reboot



確認擁塞控制演算法
sysctl net.ipv4.tcp_congestion_control


預期輸出 net.ipv4.tcp_congestion_control = bbr




查看系統支援的演算法清單
sysctl net.ipv4.tcp_available_congestion_control


輸出中應包含 bbr,例如:net.ipv4.tcp_available_congestion_control = reno cubic bbr




確認佇列規則
sysctl net.core.default_qdisc


預期輸出 net.core.default_qdisc = fq



------------------------------
確認即時連線是否套用BBR
------------------------------

確認目前TCP連線是否真正套用BBR,可觀察即時封包

ss -ti | grep bbr


結果說明:

有輸出:顯示正在使用BBR的連線資訊,表示BBR正常運作

無輸出:目前沒有活動的TCP連線,或連線數極少。這是正常的,不代表設定失敗


測試建議:可以產生一些網路流量 (如下載檔案) 後再次執行此指令



-----------------------
驗證其他網路參數
-----------------------

sysctl net.core.somaxconn


sysctl net.ipv4.ip_local_port_range


sysctl net.ipv4.tcp_rmem


sysctl net.ipv4.tcp_wmem





---------------
常見問題
---------------


Q:套用時出現 No such file or directory 錯誤

A:最常見原因是核心版本過新,移除了某些舊參數 (如 tcp_tw_recycle)。找到對應行並加上 # 註解即可

查詢哪些核心參數實際存在
sysctl -a 2>/dev/null | grep tcp_tw




Q:重開機後設定消失

A:確認設定檔位於 /etc/sysctl.d/ 且副檔名為 .conf:

ls -la /etc/sysctl.d/99-network-optimization.conf




Q:Docker 或 Kubernetes 環境下 BBR 沒有效果

A:容器網路 (CNI 如 Flannel、Calico) 可能有自己的 qdisc 或網路命名空間,sysctl 設定未必能透傳進容器

建議在容器的 securityContext 中允許 NET_ADMIN,或於 Pod 啟動時以 Init Container 套用設定




Q:如何回滾所有設定?

A:刪除設定檔後重新套用即可:

rm /etc/sysctl.d/99-network-optimization.conf

sysctl --system




----------------------------
針對特殊場景的調校建議
----------------------------

高延遲衛星網路

將 keepalive 閒置時間調高,避免正常使用中的連線被誤判為斷線:

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_keepalive_intvl = 60




極高併發短連線 (如 HTTP API 服務)

縮短 FIN 等待時間並搭配更大的埠範圍,加速連線資源回收:

net.ipv4.tcp_fin_timeout = 15

net.ipv4.ip_local_port_range = 1024 65535


同時確認應用程式層 (如 Nginx) 的 worker_connections 和 backlog 設定也一併調高




----------------
優化效益總結
----------------

傳輸效率:BBR + fq --> 提升吞吐量,降低延遲

緩衝區:rmem / wmem --> 支援大流量、高延遲傳輸

連線容量:somaxconn / backlog --> 提升高併發接受能力

資源回收:fin_timeout / tw_reuse --> 加速連線關閉與埠號釋放

連線偵測:keepalive系列 --> 及早清除殭屍連線

可靠性:SACK / timestamps --> 改善封包遺失後的重傳效率




----------------
注意事項
----------------

核心升級後:升級 Linux 核心後,建議重新執行驗證步驟,確認BBR仍為預設演算法

NAT環境:若此伺服器位於 NAT 之後 (如家用路由器後方),tcp_tw_reuse 可能造成連線混淆,建議設為 0

應用層設定需同步:somaxconn 僅是核心層上限,應用程式 (Nginx、Node.js 等) 本身的 backlog 設定也必須對應調高,否則效果有限

不要在生產環境直接大幅改動:建議先在測試環境驗證,確認效能改善或無副作用後,再部署至生產機器

監控:調整後建議使用 iperf3、nload、sar 等工具監控實際效果,數據說話

Edited by Jack

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.