一、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
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
![]()
二、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
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
真机下测试:
ab -c1 -n 10 http://172.25.6.5/download/vim.jpg 在限流的条件下,一个连接,10个请求只需要50.147s3.限制单位时间内的请求数目以及速度限制
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; }
真机下测试
ab -c1 -n 10 http://172.25.7.2/index.html 虽然有10个请求,但是只能处理一个,有9个是失败的
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,超过队列的排队,速率慢 }
在真机测试:
ab -c1 -n 10 http://172.25.6.5/index.html 有4个请求失败
本文主要探讨了在LNMP架构中,如何对nginx进行并发优化,包括CPU优化和Linux下高并发socket连接数的限制调整。同时,详细介绍了nginx的限流配置,如设置下载目录、控制单个IP并发连接数以及限制单位时间内的请求数和速度,所有配置均在真机环境下进行了测试。











391

被折叠的 条评论
为什么被折叠?



