LINUX 從網卡入手限制帶寬


事件背景

 

公司內部有一條專線,連接測試環境,通過它給測試環境的機器也加上了域名解析,這也有利於更真實的模擬生產環境,從而避免一些因為網絡配置等原因產生的 BUG。

但是這兩天接連收到反饋說環境卡的快打不開了,一開始想可能是人多嘛,帶寬本來不高,卡卡可能正常,因為是間歇性的,就沒那么在意。

今天自己使用的時候突然發現也很卡,刷新 git 都需要等待半天。

然后突然想到前兩天將雲服務器上面的 Samba 遷移到了內網,為了讓同事隨時隨地都能使用,便開通的公網訪問,連上服務器一看,果然,公網帶寬全被吃完。

 

 

排查方法 

 

我的機器使用的是 CenOS 7.7,為了便於測試,我在 /tmp 目錄下面放了一個文件 125M 的文件 image.tar:

這里文件下載使用 sz 命令,查看網卡帶寬占用使用 iftop 命令。

安裝依賴工具:

yum -y install lrzsz iftop git

安裝完成后模擬下載:

sz -y image.tar

效果如圖: 

可以在新窗口中查看,使用 iftop 查看指定網卡的帶寬使用情況:

iftop -i ens33

結果如圖:

可以看到帶寬占用飆升!當然,如果這個服務是經過 nginx 這種中間件的服務還好,可以使用 limit 模塊對請求進行各種限制。

但是這里顯然不適合,這里沒有可以限制的服務,所以就只能從網卡入手如限制它。

 

 

網卡限速

 

對於這個顯示,我們采用的是網上一種常用的方案,因為我的防火牆是關閉的,也沒法從防火牆入手。

這個服務的名稱叫做:wondershaper

https://github.com/magnific0/wondershaper

 

可以使用 git 拉去最新版本,當然也可以使用 yum 倉庫里面的,推薦使用 git 的方法:

git clone https://github.com/magnific0/wondershaper.git

安裝:

git clone https://github.com/magnific0/wondershaper.git
cd wondershaper/
make install

如圖:

 

啟動服務並設置開機啟動:

systemctl start wondershaper.service
systemctl enable wondershaper.service

 

查看該服務能做啥:

wondershaper -h

如圖:

可以看到 -d 是下載限速,-u 是上傳限速,-a 是指定網卡,-c 清除限速。這就是我們最常用的三個參數。

然后做個限速測試,我的網卡是 ens33:

wondershaper -a ens33 -d 100 -u 100

 

下載測試:

 

除了使用命令配置限速,也可以修改配置文件:

vim /etc/conf.d/wondershaper.conf

內容如下:

[wondershaper]
# Adapter
#
IFACE="ens33"

# Download rate in Kbps
#
DSPEED="100"

# Upload rate in Kbps
#
USPEED="100"

 

當然,也可以解除限速:

wondershaper -c -a ens33

 

測試如下:

到這里,該功能已經足夠我們解決很多問題!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM