有时候,我们需要在内网测试数据库在低速网络情况下,复现现在的一些问题,但一般内网都是100M或1000M,哭于没有这种环境
如果通过路由器来做,感觉有点大炮打蚊子
今天在网上发现Linux下一宽非常好用的带宽限速工具,特地来分享一下:
注意:这款工具只能在CentOS6.x有效果,在CentOS 7.x,没有效果
Linux 服务器限制网络接口的流量速率需要用到一个工具:WonderShaper。
1、wondershaper介绍
Wondershaper实际上是一个shell脚本,它使用tc来定义流量调整命令,使用QoS来处理特定的网络接口。外发流量通过放在不同优先级的队列中,达到限制传出流量速率的目的;而传入流量通过丢包的方式来达到速率限制的目的。
事实上, wondershaper 的既定目标不仅仅是对一个接口增加其带宽上限;当批量下载或上传正在进行时,wondershaper 还试图去保持互动性会话如 SSH 的低延迟。同样的,它还会控制批量上传(例如 Dropbox 的同步)不会使得下载“窒息”,反之亦然。
2、Linux安装Wonder Shaper
1)安装依赖
Debian/Ubuntu系统
sudo apt-get update
sudo apt install -y wondersharper
Centos系统
yum install epel-release -y
sudo yum install -y wondersharper
使用二进制
2)下载wondershaper
git clone https://github.com/magnific0/wondershaper.git
cd wondershaper
#直接运行wondershaper
./wondershaper
3)全局安装wondershaper
cd wondershaper
sudo make install
3、wondershaper 基本用法
首先找到网络接口的名称。以下是查找网卡详细信息的几个常用方法。
$ ip addr
$ route
$ ifconfig
一旦找到了网卡名称,就可以限制带宽速率了,如下所示。
$ sudo wondershaper -a <adapter> -d <rate> -u <rate>
比如说你的网卡名是enp0s8,你希望将下载和上传的带宽限制分别限制于1024 Kbps和512 kbps,命令应该是:
$ sudo wondershaper -a enp0s8 -d 1024 -u 512
其中
-a:网卡名
-d:下载速率
-u:上传速度
想取消网络适配器的速度限制,只要运行:
$ sudo wondershaper -c -a enp0s8
或者
$ sudo wondershaper -c enp0s8
想了解更多详细信息,请运行以下命令,查看帮助部分:
$ wondershaper -h
USAGE: ./wondershaper [-hcs] [-a <adapter>] [-d <rate>] [-u <rate>]
Limit the bandwidth of an adapter
OPTIONS:
-h Show this message //显示帮助信息
-a <adapter> Set the adapter //指定网卡接口,通过ifconifg或者ip show addr查看:比如eth0
-d <rate> Set maximum download rate (in Kbps) and/or //限制下载的速度
-u <rate> Set maximum upload rate (in Kbps) //限制上传的速度
-p Use presets in "/etc/systemd/wondershaper.conf"
-c Clear the limits from adapter //清除对应网卡接口的规则
-s Show the current status of adapter //显示当前网卡状态
-v Show the current version //显示版本信息
Configure HIPRIODST in "/etc/systemd/wondershaper.conf" for hosts
requiring high priority i.e. in case ssh uses dport 443.
MODES:
wondershaper -a <adapter> -d <rate> -u <rate>
wondershaper -c -a <adapter>
wondershaper -s -a <adapter>
EXAMPLES: //针对以上示例给出的example
wondershaper -a eth0 -d 1024 -u 512 //限制eth0上行速度512kbps,下行速度1024kbps
wondershaper -a eth0 -u 512 //仅限制eth0上行速度512kbps
wondershaper -c -a eth0 //清除为eth0设定的wondershaper的相关规则
或者查阅参考手册页。
$ man wondershaper