请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

3回答

Jeson 2017-08-22 21:08:24

既然,有几个同学都遇到这个问题了,我刚把课程中的场景配置,自己再尝试了一遍:

除开配置、或者其他不细心的原因,我觉得大家出现这样的问题,和nginx处理静态元素效率有关系:

1、当我同样用课程中的配置

ab -n 200 -c 20 http://jeson.t.imooc.io/test_mysite.html

返回的结果是:

Time taken for tests:   0.411 seconds

nginx 很快就处理了,而且确实没有出现限制。

2、我把配置作了一些修改,加入了一行如下配置:

        proxy_pass http://www.youku.com;

如果学习了代理的同学,可能会清楚这个配置,这里我得目的,就是让nginx处理效率变慢,这样nginx处理请求连接起来就变慢了。

再次压测,如下:

ab -n 200 -c 20 http://jeson.t.imooc.io/test_mysite.html  

Non-2xx responses:      199

这个时候,就会出现很多非200的请求了。而且个数是:199个被限制住。

服务端error.log出现,如下错误日志:

2017/08/22 20:58:17 [error] 4920#4920: *143405 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"

2017/08/22 20:58:17 [error] 4920#4920: *143407 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"

2017/08/22 20:58:17 [error] 4920#4920: *143406 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"

2017/08/22 20:58:17 [error] 4920#4920: *143408 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"

2017/08/22 20:58:17 [error] 4920#4920: *143409 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"

2017/08/22 20:58:17 [error] 4920#4920: *143410 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"

那么,总结为什么?

我们限制的虽然是一个,但是由于我们的并发量不足以使得nginx端并发使用到多个连接,尤其是对于nginx处理静态元素时,效率是比较高的。因此,给你的感觉是会限制不住。

0 回复 有任何疑惑可以回复我~
LetsShare 2017-08-22 15:31:10

我一开始在conf.d/default.conf中的头部,定义的limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 也是无法控制请求数。

然后我把这句放到nginx.conf中http{...}中,就可以控制了。limit_req zone=one;仍让放在default.conf的server{...}中。

0 回复 有任何疑惑可以回复我~
  • Jeson #1
    Syntax:	limit_conn_zone key zone=name:size;
    Default:	—
    Context:	http
    同学,你的认为是错误的,limit_conn_zone 配置语法只能在 http层级中,限制server的层外部。
    和在哪个配置文件没有必然关系,课程中为了方便大家学习观看效果,我配置到了default.conf中。
    但是需要注意的是,我同样配置的也是server层级以外的,所以不会有影响。
    回复 有任何疑惑可以回复我~ 2017-08-22 20:58:57
Jeson 2017-07-26 19:03:23

学习的环境是否用的慕课网提供的docker容器环境来配置的?

0 回复 有任何疑惑可以回复我~
  • 提问者 极客不忙 #1
    没有 那个页面的普通用户没有权限。
    回复 有任何疑惑可以回复我~ 2017-07-26 19:18:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信