本人依照http://www.jb51.net/article/7... 配置nginx.conf文件限制虚拟主机的并发连接数,如下是nginx.conf中的主要内容。
http {
limit_conn_zone $server_name zone=perserver:10m;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 54321;
server_name localhost;
limit_conn perserver 100;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /status {
stub_status on;
access_log off;
}
}
}
配置完成后,reload配置文件,并利用apache的ab工具向192.168.3.161:54321/index.html进行压力测试,压力测试代码如下:
/usr/bin/ab -c 2000 -n 100000 http://192.168.3.161:54321/in...
对网站加压时,利用浏览器访问192.168.3.161:54321/status观察并发连接数,发现Active connections依然大于100,如下图所示。
请问我的配置哪里出现了问题?
换了思路。
之前写的限制代码为:limit_conn_zone $server_name zone=perserver:10m;
利用了nginx内置的$server_name这个变量,没法成功限制并发连接数。
我换成了:limit_conn_zone $server_port zone=perserver:10m;
成功限制了某个端口的并发连接数
你可以用
的形式呗
才代表用 用户的 IP 地址,用 $binary_remote_addr 作为 Key,IP 地址,就有限制的意义。你上面写的$server_name,就不适合作为对用户连接数的判断条件了
因为这个模块是在PREACCESS阶段执行的,所以必然已经发生在tcp连接建立之后的http请求处理阶段了。上面的Active connections数值指的应该是tcp连接的并发数吧。即便超过了并发数,返回了503,这也是在一次成功的tcp连接之上的。