V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
villivateur
V2EX  ›  NGINX

能否使用 Nginx 实现智能限速?

  •  
  •   villivateur ·
    villivateur · 2022-01-10 14:03:14 +08:00 · 2946 次点击
    这是一个创建于 809 天前的主题,其中的信息可能已经有所发展或是发生改变。

    迫于国内云服务器带宽都很鸡肋,就算自用也会瞬间跑满。

    比如我的服务器带宽是 10M ,我从这台机器下载一个大文件的时候,会把带宽跑满,然后部署在这个服务器上的其他站点也会很慢甚至打不开。

    能否用 Nginx 实现这样的功能:当只有一个连接的时候,会把带宽全部分配给它,有多个连接的时候,带宽平均分配,这样,两个客户端同时下载的时候,就不会导致其中一个没速度了。

    当然,解决方案不限于 Nginx ,如果有更好的策略也行。

    12 条回复    2022-01-12 00:14:11 +08:00
    Inf1nity
        1
    Inf1nity  
       2022-01-10 14:52:57 +08:00   ❤️ 1
    villivateur
        2
    villivateur  
    OP
       2022-01-10 15:32:47 +08:00 via Android
    @Inf1nity 感谢回复,但这样的话,只是单纯的限速,而不能在带宽充足的时候跑满
    Inf1nity
        3
    Inf1nity  
       2022-01-10 15:50:39 +08:00
    @villivateur 我觉得你的需求可以通过每个站点使用一个虚拟网卡,然后虚拟网卡之间做负载均衡来实现。但是我觉得这样实现起来有点困难,不知道在不入侵程序代码的情况下,是否还有其他现成的,更好的方案。
    defunct9
        4
    defunct9  
       2022-01-10 15:55:10 +08:00
    写个 lua 也许能实现
    gstqc
        5
    gstqc  
       2022-01-10 16:00:25 +08:00 via Android
    把文件迁移到对象存储套个 CDN 吧
    10M 带宽就别腾挪了
    iqoo
        6
    iqoo  
       2022-01-10 16:16:35 +08:00
    降低运维端口的优先级,设置一个最小带宽(例如用 tc 流控)。事实上除了网络,CPU 也可以这样玩。CPU 使用率低的话 brotli 使用最高压缩率,负载高的时候降低压缩率。
    eason1874
        7
    eason1874  
       2022-01-10 16:39:06 +08:00
    ngx_lua 模块可以做到,写过类似的

    njs 估计也行,没写过
    luojiyin87
        8
    luojiyin87  
       2022-01-10 21:51:59 +08:00
    nginx-php 可以
    lyhiving
        9
    lyhiving  
       2022-01-11 01:21:30 +08:00 via Android
    前后端分离,附件交给 CDN
    learningman
        10
    learningman  
       2022-01-11 01:33:53 +08:00
    @iqoo #5 能说一下 brotli 这个动态压缩率是怎么实现的吗
    iqoo
        11
    iqoo  
       2022-01-11 20:11:18 +08:00
    @learningman 反向代理 nodejs 程序实现的,根据 CPU 使用率调整压缩率。当然只是概念验证而已,实际并没有应用,因为我的站点基本都是静态资源,可以预先 br 最高等级压缩。
    HeartJ
        12
    HeartJ  
       2022-01-12 00:14:11 +08:00
    可以尝试用 tc 对端口进行限速
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5704 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:08 · PVG 14:08 · LAX 23:08 · JFK 02:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.