在 Linux 上,MinIO 自身并没有像 Nginx 那样直接的“QPS/带宽限流”配置项,但可以通过 操作系统 / 前缀 / 部署架构 来实现限流。下面按推荐程度给你几种常见做法。
tc(推荐,最通用)如果你是在 Linux 服务器直连 MinIO,可以用 tc(Traffic Control)对 MinIO 端口或网卡做限速。
# 假设 MinIO 监听 9000
# 网卡是 eth0
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 9000 0xffff flowid 1:1
✅ 优点
❌ 缺点
强烈推荐生产环境使用
MinIO → Nginx → Client
在 Nginx 层做限流。
http {
limit_rate 1m; # 每个连接最大 1MB/s
limit_rate_after 10m; # 前 10MB 不限速
}
http {
limit_conn_zone $binary_remote_addr zone=minio_conn:10m;
server {
location / {
limit_conn minio_conn 5;
}
}
}
http {
limit_req_zone $binary_remote_addr zone=minio_req:10m rate=10r/s;
server {
location / {
limit_req zone=minio_req burst=20 nodelay;
}
}
}
✅ 优点
✅ 这是大多数企业 MinIO 限流方案
MinIO 不支持直接限流,但可以通过:
mc admin config set myminio api max-object-size=1073741824
限制上传对象最大 1GB
docker run \
--memory=4g \
--cpus=2 \
-p 9000:9000 \
minio/minio server /data
resources:
limits:
cpu: "2"
memory: "4Gi"
✅ 适合云原生环境
在 SDK 中控制上传/下载速度(如 S3 SDK、mc),但不可控、不可信
| 场景 | 推荐方案 |
|---|---|
| 生产环境 | ✅ Nginx 反向代理 |
| 裸机直连 | tc |
| 云原生 | K8s / Docker |
| 精细控制 | Nginx + 多 Bucket |
Client
↓
Nginx(限流)
↓
MinIO(9000)
如果你愿意,可以告诉我:
我可以给你一份可直接用的完整配置。