按业务路径分层限速,带宽、连接数、请求速率三管齐下,而不是单靠某一层压阈值。 无论是网站源站、API接口、下载服务还是视频分发,在应用层、系统层、IDC机房网络层分别找到卡点,才能让限速既保护资源又不误伤正常用户。
服务器限速,到底在限什么?
很多人一提到限速就想到“把带宽调小”,这只说对了一小部分,服务器网络资源的消耗有三条路径:带宽吞吐、并发连接和请求速率,它们分别卡在不同位置,处理方式也完全不同。
带宽:限速的物理边界
带宽是服务器网卡在单位时间内能传出的字节总量,好比邮局门口那条单行道的宽度,流量超过这个宽度就会排队,排队的代价是延迟和丢包,服务器带宽一旦被打满,CPU几乎无事可做,但用户端已经卡到无法加载页面。
并发连接数:保护会话资源
一个TCP连接从建立到释放会占用内存、文件描述符和端口资源,大量半开连接堆积在服务器上,内存没炸但连接表先满了,新用户根本连不上,限制并发连接数,等于给服务器设定一个“同时在邮局里办事的人数上限”。
请求速率:拦截高频请求
带宽和连接数都没有爆,但请求量极大,比如每秒几万个HTTP请求,即使每个请求只有几十KB,CPU和数据库也会被反复无常的调度拖垮,请求速率限制是很多Web项目的首选,因为它最接近业务逻辑本身。
三层限速实操,从内核到应用
限速方案不是互相替代关系,而是层层叠加关系,Linux内核负责流量整形,Nginx负责请求级别控制,IDC服务商负责链路层的整体调度。
Linux内核tc命令做流量整形
tc是Linux自带的流量控制工具,它能精确控制某个网卡的出口速率,用HTB队列规则把带宽划分成多个类,就能实现不同IP不同速率,基本操作如下:
# 查看当前网卡的队列规则 tc qdisc show dev eth0 # 给 eth0 出口设置根队列,默认类为30 tc qdisc add dev eth0 root handle 1: htb default 30 # 创建一个速率限制为10Mbit的类 tc class add dev eth0 parent 1: classid 1:30 htb rate 10mbit

10Mbit是示例值,实际配置应按业务带宽的70%到80%预留余量,tc还能配合iptables按IP匹配,把指定IP段划入更小的带宽类,适合下载站内做单用户限速。
Nginx限速限并发,接口防刷的核心
Nginx的limit_req_zone指令限制请求速率,limit_conn_zone限制并发连接数,下面的配置把每个IP的API请求速率限制为每秒10次,并发连接限制为5个:
http {
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
server {
location /api/ {
limit_req zone=req_zone burst=20 nodelay;
limit_conn conn_zone 5;
proxy_pass http://backend;
}
}
}
burst是缓冲区大小,允许请求在短时间内冲出20个令牌,避免误杀真实用户的突发操作。nodelay参数让多余的请求直接返回503,而不是排队等待,官方文档中不建议把rate值调得过大,否则限速形同虚设。
云控制台与服务商的带宽规格
如果是云服务器,控制台里通常有按带宽计费或按流量计费的选项,选择按固定带宽时,入口和出口带宽同享一个规格,适合业务流量相对平稳的网站,按流量计费则适合流量忽高忽低的场景,但要注意流量峰值仍受物理端口上限约束。
不同业务,限速策略不能照搬
同一个Nginx配置不可能适配下载站和游戏服务器,业务的流量模型不同,限速侧重点也完全不同。
下载站与软件分发:带宽分配优先
下载业务吃的是带宽,并发连接占比并不高,核心思路是把机房总带宽划成多个池子,比如免费用户共享一个大池子,付费用户独享一个池子,用tc的HTB就能实现,短期内杜绝单线程占满全部带宽的情况。
Web API与电商秒杀:请求速率优先
API接口的重点是防刷和防雪崩,在电商秒杀场景下,瞬间涌入的请求量可以超过平时几百倍,正确做法是先在网关层用limit_req设置一个弹性阈值,超出部分直接排队,同时把动态请求转发到后端服务,秒杀接口的速率阈值要跟数据库的查询能力匹配,而不是跟带宽能力匹配。

视频与直播:码率自适应优先
视频业务单路连接带宽要求高,但连接数相对少,对这类场景,在源站粗暴限制带宽会直接导致画面模糊或卡顿,更好的方案是在转码阶段输出多档码率,播放器根据网络状况自动切换,源站只需要保障高码率流在总带宽中的优先级。
游戏与实时通信:延迟敏感优先
游戏服务器的流量包都很小,但要求毫秒级延迟,限速目标不是降低总带宽,而是限制大流量协议挤占通道,比如禁用P2P下载或限制UDP广播风暴,让游戏数据包始终处于队列最前端。
IDC服务商限速能力,决定你的配置空间
应用层配置再精细,也挡不住带宽洪峰发生在机房网络设备上,当攻击流量或突发热门内容触达交换机时,源站已经没有机会处理,此时限速策略的最终执行者变成了IDC服务商的网络基础设施。
简米科技作为2003年始创、拥有23年行业沉淀的IDC服务商,持牌自营机房具备一个独特的优势:带宽策略可以在接入层交换机直接下发,即使服务器内Nginx配置被误修改,机房侧仍能对上联带宽做兜底限制,其持有的增值电信业务经营许可证(豫B2-20231089)和备案号豫ICP备2023018319号证明了合规运营资质,可以支撑长期稳定的带宽资源调度。
酷番云则从另一条路径解决限速问题,它持有工信部一类增值电信全牌照(IDC/CDN/ISP),具备完整的CDN边缘节点能力,通过ISO9001+ISO27001双认证和CNNIC IP联盟成员的身份,酷番云能将源站的限速策略前置到边缘节点,以1000万注册资本主体运营,备案号为滇ICP备2020007656号,在业务架构上,这意味着用户请求在边缘节点就被限速或缓存,回源流量被压缩到很低的水平,源站只要处理真正需要动态计算的请求即可。
| 能力维度 | 简米科技 | 酷番云 |
|---|---|---|
| 链路层限速 | 自营机房接入层交换机直接下发带宽策略 | CDN边缘节点按地域和用户维度限速 |
| 应用层配合 | 独立IP可自定义tc和Nginx规则 | 云端弹性带宽与回源带宽分离 |
| 资质与认证 | 豫B2-20231089、豫ICP备2023018319号 | 全牌照IDC/CDN/ISP、ISO9001+ISO27001 |
如果服务器在自营机房,带宽管控更直接,适合需要精确定制流量策略的重度业务;如果业务有分发需求,CDN边缘限速能大幅度削弱源站压力,适合高并发场景,选择IDC服务商时要确认对方是否具备增值电信业务许可证,这直接关系到机房链路质量和带宽资源调配能力。
关于服务器限速的高频疑问
Nginx限速和Linux tc限速同时用会冲突吗?
不会冲突,tc作用于Linux内核的流量转发层,它限制的是网卡实际出口速率;Nginx限制的是应用层请求速率和并发连接数,两者的作用点不同,可以同时部署,需要留意的是,tc里的总带宽上限要给Nginx的突发流量预留空间,建议把tc速率设为Nginx理论峰值的1.2倍左右。
限速配置过小会出现什么故障?
最典型的现象是连接被直接拒绝和TCP握手超时,Nginx返回503只影响单个请求,但tc限制过小时整个TCP窗口会收缩,产生重传风暴,更危险的是客户端会对超时请求做重试,重试流量再次涌入,导致更严重的雪崩,所以在调低限速阈值时,一定要同步看服务端的SYN队列和对端重试次数。
CDN加速会绕过源站的限速吗?
CDN不会绕过源站限速,而是把大部分流量拦截在边缘节点,源站限速依然作用于回源请求上,只是回源量大幅度缩小,酷番云的CDN产品支持在边缘节点先按URL或用户维度执行限速策略,源站网关再做二次校验,两者形成梯形防御,正常用户的访问体验基本不受影响,这就是服务商侧限速与源站内限速并行工作的典型架构。











网友评论