LNMP架构下nginx的并发优化和限流

一、nginx并发优化

1.cpu的优化以及高效传输

vim /usr/local/lnmp/nginx/conf/nginx.conf
 
user  nginx;   
worker_processes  2;           #工作进程数
worker_cpu_affinity 01 10;   #最多开启8个,cpu有多少核,就有几位数,1代表内核开启,0代表内核关闭
worker_rlimit_nofile 65535; #子进程的最大打开文件数限制,如果没有设置,这个值为操作系统的限制
#worker_connections  65535;#单个工作进程并大连接数
#use epoll;       #使用epoll模型
 
开启文件高效传输模式,同时设置tcp_nopush和tcp_nodelay 为on,可以防止网络和磁盘IO阻塞 
sendfile        on;    
 tcp_nopush     on;
 tcp_nodelay    on;
 ---------------------------------------------
systemctl restart nginx.service

LNMP架构下nginx的并发优化和限流_第1张图片


2. Linux下高并发socket最大连接数所受的各种限制的优化

<1>查看原来限制
[root@server1 ~]# sysctl net.ipv4.ip_local_port_range 
 net.ipv4.ip_local_port_range = 32768	60999
[root@server1 ~]# sysctl net.core.somaxconn 
 net.core.somaxconn = 128
[root@server1 ~]# sysctl net.ipv4.tcp_tw_reuse 
 net.ipv4.tcp_tw_reuse = 2
-----------------------------------------------------------------------
<2>编写限制配置文件
net.ipv4.ip_local_port_range = 1024 65535   #修改网络内核对TCP连接的有关限制
net.core.somaxconn = 2048  		    #限制接收新TCP连接侦听队列的大小
net.ipv4.tcp_tw_recycle = 1   		    #启用tcp连接timewait快速回收
net.ipv4.tcp_tw_reuse = 1		    #启用tcp连接timewait重用
-----------------------------------------------------------------------
<3>刷新
[root@server1 ~]# sysctl --system 

LNMP架构下nginx的并发优化和限流_第2张图片

LNMP架构下nginx的并发优化和限流_第3张图片 LNMP架构下nginx的并发优化和限流_第4张图片

二、nginx的限流

1.新建一个download目录 /usr/local/lnmp/nginx/html/download

[root@server1 ~]# mkdir /usr/local/lnmp/nginx/html/download
[root@server1 ~]# ll -d /usr/local/lnmp/nginx/html/download
drwxr-xr-x 2 root root 6 Aug 13 21:54 /usr/local/lnmp/nginx/html/download

真机下测试:

ab -c1 -n 10 http://172.25.6.5/download/vim.jpg
在没有限流的条件下,一个连接,10个请求只需要0.003s

LNMP架构下nginx的并发优化和限流_第5张图片

2.控制单个ip并发连接数

vi /usr/local/lnmp/nginx/conf/nginx.conf
 
limit_conn_zone $binary_remote_addr zone=addr:10m;
##$binary_remote_addr  表示通过remote_addr这个标识来做限制
##zone=addr:10m  表示生成一个大小为10M,名字为one的内存区域
#在server字段里面
 location /download/ {
                limit_conn addr 1;   #限制并发数
                limit_rate 50k;      #限制带宽
        }
--------------------------------------------
nginx -s reload

LNMP架构下nginx的并发优化和限流_第6张图片

真机下测试:

ab -c1 -n 10 http://172.25.6.5/download/vim.jpg
在限流的条件下,一个连接,10个请求只需要50.147s

3.限制单位时间内的请求数目以及速度限制

vi /usr/local/lnmp/nginx/conf/nginx.conf
  
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
#rate=1r/s表示允许相同标识的客户端的访问频次,这里表示每秒一次
在server字段里面添加
        location / {
            limit_req zone=one;
        }

LNMP架构下nginx的并发优化和限流_第7张图片

真机下测试

ab -c1 -n 10 http://172.25.7.2/index.html    
虽然有10个请求,但是只能处理一个,有9个是失败的

LNMP架构下nginx的并发优化和限流_第8张图片


vi /usr/local/lnmp/nginx/conf/nginx.conf
 
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
rate=1r/s表示允许相同标识的客户端的访问频次,这里表示每秒一次
在server字段里面添加
        location / {
            limit_req zone=one;
            limit_req zone=one burst=5 nodelay;  #变动 
      #队列长度为5,只处理队列以内的,速率快,如果不加nodelay,超过队列的排队,速率慢
        }

LNMP架构下nginx的并发优化和限流_第9张图片

在真机测试:

ab -c1 -n 10 http://172.25.6.5/index.html  有4个请求失败

LNMP架构下nginx的并发优化和限流_第10张图片

 

你可能感兴趣的:(linux实战,nginx)