Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 系統安裝與使用 Trickle 限制應用程式頻寬

編輯:關於 Linux

當背景下載佔滿頻寬導致網頁瀏覽卡頓時,Trickle 這款用戶空間頻寬塑形工具能派上大用場。它不需核心模組支援,透過 LD_PRELOAD 攔截動態連結的 Socket API,即可針對單一程式限制上傳/下載速度。本文詳細說明 Trickle 的安裝、原理、適用範圍與實戰操作。

什麼是 Trickle?

Trickle 是一款輕量級頻寬控制工具,適用於任何使用 glibc 動態連結的 TCP 應用程式(如 wget、curl、scp、ftp、SSH、瀏覽器等)。它在用戶空間運作,無需 root 權限即可由一般使用者對自己的程式限速。

安裝 Trickle

Debian / Ubuntu / Linux Mint

sudo apt-get update
sudo apt-get install trickle

RHEL / CentOS / Fedora

sudo yum update
sudo yum install trickle

注意: CentOS 7/8 需啟用 EPEL 倉庫(yum install epel-release)。

Trickle 運作原理與限制

  • 動態連結攔截:透過 LD_PRELOAD 載入 libtrickle.so,覆寫 send()、recv() 等 Socket 函式,延遲資料傳輸以達到限速效果。
  • 僅支援 TCP:UDP 協定(如 BitTorrent、DNS 查詢、遊戲語音)不受影響。
  • 需動態連結 glibc:靜態編譯程式(gcc -static)、Go/Rust 預設靜態連結的二進位檔、透過 dlopen 手動載入 Socket 的程式均無效。
  • 不支援 Root 權限程式:以 sudo 執行的指令環境變數會被清除,Trickle 失效。

檢測程式是否相容

使用 ldd 檢查程式是否動態連結 libc.so:

ldd /usr/bin/filezilla | grep libc.so

若有輸出(如 libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6),即可使用 Trickle 限速。

實戰使用範例

1. 限制 wget 下載速度

trickle -d 500 -u 100 wget https://example.com/largefile.iso
  • -d 500:下載限速 500 KB/s
  • -u 100:上傳限速 100 KB/s

2. 限制 scp 檔案傳輸

trickle -u 200 scp bigfile.tar.gz user@remote:/path/

3. 限制整個 Shell 工作階段

trickle -d 1000 -u 200 bash
# 此 Shell 內啟動的所有動態連結程式均受限
wget ...
scp ...
exit  # 結束限速環境

4. 常駐服務模式

trickled -d 1000 -u 200  # 啟動 daemon
trickle -d 500 wget ...  # 客戶端連接 daemon,共享頻寬池

進階技巧

  • 搭配腳本自動化:將 trickle -d 200 寫入備份腳本,避免備份佔滿頻寬影響線上服務。
  • 排除特定連接埠:Trickle 本身不支援,需改用 tc (Traffic Control) 核心級 QoS。
  • 圖形化前端:trickle-gtk 套件提供簡單 GUI 設定。

總結

Trickle 是快速解決「單一程式佔滿頻寬」的利器,安裝簡單、無需權限、即時生效。但受限於用戶空間機制,無法替代核心級流量控制。對於生產環境的精細 QoS,建議改用 tc + htb 或網路設備原生 QoS 功能。

Copyright © Windows教程網 All Rights Reserved