我有个问题思考很久了,就是用nginx限制访问量来保证系统稳定性。例如某台机器上的nginx最高并发数是1万,但是后端系统最高只能承受1千并发,那么nginx就只给1千的流量通过,其他的9千流量引导到一个页面,该页面显示说"现在访问量大,稍后再访问"。 简单讲就是nginx 如何限流的问题。该问题非常典型,尤其像双十一,或者电商类的抢购都会面临瞬间负载过高的问题,现在大公司已经有很好的解决方案。我查过不少资料,但是没有得到答案。只好请教agentzh以及其他各位大牛了,谢谢。
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
的确,瞬时速率提高是不能通过,但问题是会被提前拦截。要知道电商的抢购时期,流量是陡增的,行为和我们用ab模拟类似,瞬时增长到一个峰值,然后持续几分钟;比如:限制是每秒最多10W请求,用lua-resty-limit-traffic 和 nginx 的 ngx_limit_xxx都会被提前拦截;基本上从第二个请求就会被拦截;这是不符合预期的,我有参与过电商抢购的LB流量分担业务,使用shared_dict实现了这种场景的限流;
有办法对整个Nginx process的进出的流量做限制吗?例如把进入总流量限制成10M。
On Saturday, May 28, 2016 at 6:04:57 AM UTC+8, agentzh wrote:Hello!
2016-05-20 2:04 GMT-07:00 Guanglin Lv:
>
> 值得说明的是,这两个都是对平均速率进行控制,并不适合电商防攻击防黄牛场景;
>
这种说法并不正确。lua-resty-limit-traffic 和 nginx 的 ngx_limit_xxx
模块并不是对平均速率进行控制,而是请求粒度的。瞬时速率提高也是不能通过的。这里使用的是 leaky bucket 算法。
Regards,
-agentzh
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty+subscribe@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+unsubscribe@googlegroups.com
--比如:限制是每秒最多10W请求,用lua-resty-limit-traffic 和 nginx 的 ngx_limit_xxx都会被提前拦截;基本上从第二个请求就会被拦截;
我有个问题思考很久了,就是用nginx限制访问量来保证系统稳定性。例如某台机器上的nginx最高并发数是1万,但是后端系统最高只能承受1千并发,那么nginx就只给1千的流量通过,其他的9千流量引导到一个页面,该页面显示说"现在访问量大,稍后再访问"。 简单讲就是nginx 如何限流的问题。该问题非常典型,尤其像双十一,或者电商类的抢购都会面临瞬间负载过高的问题,现在大公司已经有很好的解决方案。我查过不少资料,但是没有得到答案。只好请教agentzh以及其他各位大牛了,谢谢。