既然,有几个同学都遇到这个问题了,我刚把课程中的场景配置,自己再尝试了一遍:
除开配置、或者其他不细心的原因,我觉得大家出现这样的问题,和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处理静态元素时,效率是比较高的。因此,给你的感觉是会限制不住。