trickle 限制使用者空間頻寬

oOo右右發表於2019-01-03
  • 摘要:對於使用者量大的情況下,可能一個程式就佔用了你所有的網路頻寬。這種情況可以通過nethogs來檢視。具體參見:《nethogs檢視每個程式使用的頻寬》。這種情況下,你就需要臨時限制下頻寬,來確保你的網路頻寬不會被一個程式耗而對其他應用造成影響。下面來介紹一款輕量級的使用者空間頻寬控制管理的工具------trickle。1.trickle介紹trickle是一款輕量級的使用者空間頻寬控制管理的工具,用來限制如瀏覽器Firefox等,FTP,SSH,curl,wget,scp等等使用
  • 對於使用者量大的情況下,可能一個程式就佔用了你所有的網路頻寬。這種情況可以通過nethogs來檢視。具體參見: 《nethogs 檢視每個程式使用的頻寬》。這種情況下,你就需要臨時限制下頻寬,來確保你的網路頻寬不會被一個程式耗而對其他應用造成影響。下面來介紹一款輕量級的使用者空間頻寬控制管理的工具------trickle。

原:https://www.aliyun.com/jiaocheng/143037.html?spm=5176.100033.1.28.61492a90YuetXv

1. trickle介紹

trickle是一款輕量級的使用者空間頻寬控制管理的工具,用來限制如瀏覽器Firefox等, FTP , SSH,curl,wget,scp等等使用網路頻寬。

trickle通過控制socket資料讀寫量來控制和限制應用的上傳和下載速度。要注意的是trickle使用動態連結和載入,所以只對於使用libc.so庫的程式有用,其他的則無效的。由於trickle可以設定資料在socket上的傳輸延遲,因此就可以用來限制應用程式的網路頻寬。

trickle不能用於限制使用UDP協議的應用的頻寬,只可用於TCP連線。也無法工作在使用靜態連結的可執行程式上。

2. 如何判定trickle對有個應用程式有效

根據是否使用libc.so庫來判斷。

可以通過ldd命令來檢視某個應用程式是否使用了libc.so庫。如果應用程式使用了這個庫,就可以用trickle來限制網路頻寬,否則不行。

# ldd /usr/bin/wget | grep libc.so 

libc.so.6 => /lib64/libc.so.6 (0x00002adc30397000) 

# ldd /usr/bin/wget | grep libc.so libc.so.6 => /lib64/libc.so.6 (0x00002adc30397000) 

3. 安裝trickle

需要先安裝EPEL源,參見《CentOS / RHCE 可供使用的yum》。

# yum install trickle 

1# yum install trickle 

4. 使用trickle

# trickle --help 

Usage: trickle [-hvVs] [-d <rate>] [-u <rate>] [-w <length>] [-t <seconds>] 

[-l <length>] [-n <path>] command ... 

-h Help (this) 

-v Increase verbosity level 

-V Print trickle version 

-s 在獨立模式下獨立執行 

-d <rate> 設定最大累計下載速率為 <rate> KB/s 

-u <rate> 設定最大累計上傳速度為 <rate> KB/s 

-w <length> 設定視窗長度為 <length> KB 。預設512KB。 

-t <seconds> 設定預設的平滑時間 <seconds> s 。平滑時間決定多少時間間隔trickle將嘗試讓應用程式傳輸資料。較小的值(0.1 - 1秒)會導致更連續(平滑)會話,非常適合於互動式應用。而較大的值(1 - 10秒)可能會產生一陣陣的傳送和接收資料,對需要大量頻寬的應用程式更好。 

-l <length> 設定預設的平滑長度 <length> KB 。 預設10 KB。 

-n <path> 指定trickled socket名稱 <path> 。 預設/tmp/.trickled.sock 。 

-L <ms> 設定延時。 

1234567891011121314 

# trickle --helpUsage: trickle [-hvVs] [-d <rate>] [-u <rate>] [-w <length>] [-t <seconds>] [-l <length>] [-n <path>] command ...-h Help (this)-v Increase verbosity level-V Print trickle version-s 在獨立模式下獨立執行-d <rate>設定最大累計下載速率為 <rate> KB/s-u <rate>設定最大累計上傳速度為 <rate> KB/s-w <length>設定視窗長度為 <length> KB 。預設512KB。-t <seconds> 設定預設的平滑時間 <seconds> s 。平滑時間決定多少時間間隔trickle將嘗試讓應用程式傳輸資料。較小的值(0.1 - 1秒)會導致更連續(平滑)會話,非常適合於互動式應用。而較大的值(1 - 10秒)可能會產生一陣陣的傳送和接收資料,對需要大量頻寬的應用程式更好。-l <length>設定預設的平滑長度 <length> KB 。 預設10 KB。-n <path>指定trickled socket名稱 <path> 。 預設/tmp/.trickled.sock 。-L <ms>設定延時。 

5. 舉例

限制wget下載速度為50KB/s

6.  限制一個shell的所有命令頻寬

 

相關文章