加餐|搞懂 Nginx限流的关键概念
谢友鹏

你好,我是谢友鹏。
在前面第六节课的讲解里,我并没有详细解释 Nginx 限流的概念,而是在扩展阅读中鼓励大家自己动手修改参数尝试,并结合给出的资料做分析。现在课程正文告一段落,我特意安排了今天的加餐,和你分享一下如何通过实验加深对 Nginx 限流的理解。
Nginx 官方博客 rate-limiting-nginx 详细讲解了限流的原理及相关细节,能够帮助我们澄清许多常见误区,建议你优先参考这篇第一手资料。如果你希望进一步加深理解,我们今天将结合实验进行分析和探讨。
Nginx 限流原理
Nginx 的限流机制基于漏桶算法(Leaky Bucket),用于控制请求速率,以防止服务器因接收过多请求而过载。其核心思想是通过设定速率限制流量的进入,从而平稳处理请求,避免突发流量对系统造成冲击。

图片来自:rate-limiting-nginx
Nginx 的限流配置中有几个关键概念。
rate(速率):控制每秒允许的最大请求数。例如,rate=10r/s表示每秒最多允许 10 个请求。如果超过这个速率,请求将会被限流。
burst(突发流量):允许突发请求的最大数量。在突发流量内,Nginx 不会立即拒绝请求,而是将它们放入一个缓冲队列中,等待在速率允许的情况下进行处理。
nodelay(无延迟):当配置了burst时,若启用了nodelay选项,突发流量将被立即处理,而不是排队等待。如果不启用nodelay,超过rate的请求将按rate的速度逐个处理,可能会引起延迟。
delay(延迟):在两阶段限流(nginx 1.15.7 及以后的版本支持)中,delay控制突发流量的一部分请求会立即处理,而另一部分则会按rate的限制进行排队。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. Nginx的限流机制基于漏桶算法,通过设定速率限制流量的进入,以防止服务器因接收过多请求而过载。 2. Nginx限流配置中的关键概念包括rate(速率)、burst(突发流量)、nodelay(无延迟)和delay(延迟),这些概念的理解对于正确配置限流策略至关重要。 3. Nginx基于毫秒维度进行限制,配置的rate和burst会影响请求的处理方式,而nodelay和delay则可以用来平衡突发流量和时延问题。 4. 通过实验验证Nginx的限流效果,可以更直观地理解限流策略的作用和影响。 5. 实验结果表明,请求速率超出Nginx每100ms处理一个请求的限制时,部分请求会被限流,返回503状态码。 6. 了解Nginx的基本操作和配置方法,可以更好地进行实验验证和理解限流策略的实际效果。 7. 增加burst后,对于超出的请求并不会立即失败,而是先放到队列中慢慢处理,引发了一些请求的耗时明显增高。 8. 配置nodelay后,在队列中的突发请求不再排队处理,而是立即得到处理。 9. 启用delay=2后,部分请求立即得到处理,而超出的请求会被延迟处理,有效地平衡了延迟和流量控制。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《网络架构实战课》,新⼈⾸单¥59
《网络架构实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论