V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
0littleboy
V2EX  ›  程序员

关于限制带宽?

  •  
  •   0littleboy · 2023-10-08 14:19:16 +08:00 · 878 次点击
    这是一个创建于 416 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用令牌桶实现了个限制带宽的版本,每个令牌代表一字节 请求想要通过令牌桶则需要阻塞字节个数令牌生产所需要的时间

    问题是不够平滑,1000 MB 的上传请求,令牌生成速度如果是 1 MB / s 则需要等待 1000 s 客户端观察到的上传速度就是 0 ,理想状态是一直能看到有效的上传速度

    v 友们何解?

    fregie
        1
    fregie  
       2023-10-08 16:59:49 +08:00
    桶里要有一个令牌个数的缓冲区
    就是说默认先在桶里给一定数量的令牌,同时按一定的速率向桶里放新的令牌,请求来的时候从桶里拿
    这样总体能限制住速率,同时又能应对一定情况的突发流量,也不会存在你说的请求来的时候需要等着桶里攒够令牌
    xycost233
        2
    xycost233  
       2023-10-08 17:00:54 +08:00
    1. 上传请求分段,通过一段上传一段,别等着拿到 1000M 全部的令牌再上传
    2. 调整令牌桶控制粒度,啥场景需要精确到一个字节的带宽限制啊
    3. 降低令牌的生产间隔,比如你之前是一秒刷新一次令牌桶,改成 10 毫米

    以上三点都可以让令牌桶的流控更加平滑
    datocp
        3
    datocp  
       2023-10-09 07:08:55 +08:00 via Android
    https://wiki.dd-wrt.com/wiki/index.php/Preventing_Brute_Force_Attacks

    iptables limit 是早些年测过最平滑,指的是不会出现图片不显示的情况,当然有时间还是研究 tc 吧,掌握 shell ,动态插入基于源地址的限速也很简单。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5651 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:40 · PVG 11:40 · LAX 19:40 · JFK 22:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.