迫于国内云服务器带宽都很鸡肋,就算自用也会瞬间跑满。
比如我的服务器带宽是 10M ,我从这台机器下载一个大文件的时候,会把带宽跑满,然后部署在这个服务器上的其他站点也会很慢甚至打不开。
能否用 Nginx 实现这样的功能:当只有一个连接的时候,会把带宽全部分配给它,有多个连接的时候,带宽平均分配,这样,两个客户端同时下载的时候,就不会导致其中一个没速度了。
当然,解决方案不限于 Nginx ,如果有更好的策略也行。
1
Inf1nity 2022-01-10 14:52:57 +08:00 1
|
2
villivateur OP @Inf1nity 感谢回复,但这样的话,只是单纯的限速,而不能在带宽充足的时候跑满
|
3
Inf1nity 2022-01-10 15:50:39 +08:00
@villivateur 我觉得你的需求可以通过每个站点使用一个虚拟网卡,然后虚拟网卡之间做负载均衡来实现。但是我觉得这样实现起来有点困难,不知道在不入侵程序代码的情况下,是否还有其他现成的,更好的方案。
|
4
defunct9 2022-01-10 15:55:10 +08:00
写个 lua 也许能实现
|
5
0ZXYDDu796nVCFxq 2022-01-10 16:00:25 +08:00 via Android
把文件迁移到对象存储套个 CDN 吧
10M 带宽就别腾挪了 |
6
iqoo 2022-01-10 16:16:35 +08:00
降低运维端口的优先级,设置一个最小带宽(例如用 tc 流控)。事实上除了网络,CPU 也可以这样玩。CPU 使用率低的话 brotli 使用最高压缩率,负载高的时候降低压缩率。
|
7
eason1874 2022-01-10 16:39:06 +08:00
ngx_lua 模块可以做到,写过类似的
njs 估计也行,没写过 |
8
luojiyin87 2022-01-10 21:51:59 +08:00
nginx-php 可以
|
9
lyhiving 2022-01-11 01:21:30 +08:00 via Android
前后端分离,附件交给 CDN
|
10
learningman 2022-01-11 01:33:53 +08:00
@iqoo #5 能说一下 brotli 这个动态压缩率是怎么实现的吗
|
11
iqoo 2022-01-11 20:11:18 +08:00
@learningman 反向代理 nodejs 程序实现的,根据 CPU 使用率调整压缩率。当然只是概念验证而已,实际并没有应用,因为我的站点基本都是静态资源,可以预先 br 最高等级压缩。
|
12
HeartJ 2022-01-12 00:14:11 +08:00
可以尝试用 tc 对端口进行限速
|