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

2022-01-10 14:03:14 +08:00
 villivateur

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

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

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

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

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

njs 估计也行,没写过
luojiyin87
2022-01-10 21:51:59 +08:00
nginx-php 可以
lyhiving
2022-01-11 01:21:30 +08:00
前后端分离,附件交给 CDN
learningman
2022-01-11 01:33:53 +08:00
@iqoo #5 能说一下 brotli 这个动态压缩率是怎么实现的吗
iqoo
2022-01-11 20:11:18 +08:00
@learningman 反向代理 nodejs 程序实现的,根据 CPU 使用率调整压缩率。当然只是概念验证而已,实际并没有应用,因为我的站点基本都是静态资源,可以预先 br 最高等级压缩。
HeartJ
2022-01-12 00:14:11 +08:00
可以尝试用 tc 对端口进行限速

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/827301

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX