• 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

    测试如下:

    到这里,该功能已经足够我们解决很多问题!

  • 相关阅读:
    同步类容器和并发类容器
    T4模板生成自定义的实体类
    C# UrlEncode 编码
    PLSQL快速生成增删改查语句
    Oracle 检查星期只能是1-7的数字不能重复
    PLSQL 插入数据无响应
    C# DataTable 排序
    C# 获取程序集信息
    C# 调用WinRAR解压缩文件
    DataTable 获取一列最大值并修改
  • 原文地址:https://www.cnblogs.com/Dy1an/p/12170515.html
Copyright © 2020-2023  润新知