Nginx优化之高并发配置,支持2万到3万并发量
程序员文章站
2022-07-15 15:54:02
...
Nginx安装
安装过程在下面的文章当中,里面详细的介绍了Nginx服务的安装过程。
Nginx编译安装详细过程
Nginx服务的启停控制
Nginx启停控制的办法中一共有两种方法可以用来对Nginx服务的进行启停操作。
Nginx服务的启停控制
压力测试
使用压力测试来对网页进行高并发测试,就能看出WEB服务器的并发量,这里使用Apache自带的ab压力测试工具进行测试。
ab压力测试的安装、使用、破2万并发测试
高并发简介
高并发(High Concurrency)通常是指通过设计保证系统能够同时并行处理很多请求。通俗来讲,高并发是指在同一个时间点,有很多用户同时的访问同一 API 接口或者 Url 地址。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。
Nginx高并发配置
Nginx优化的方法有三种,第一种是优化Linux内核参数
,使内核变的更为强大,第二种是优化Nginx配置文件
,使Nginx变的更加强大,第三种是扩展服务器的CPU和内存
,使服务器变的更加强大。
Linux内核参数优化
vim /etc/sysctl.conf #修改内核参数文件
添加:
net.core.netdev_max_backlog = 262144 #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目
net.core.somaxconn = 262144 #调节系统同时发起的TCP连接数
net.ipv4.tcp_max_orphans = 262144 #设定系统中最多允许存在多少tcp套接字不被关联到任何一个用户文件句柄上
net.ipv4.tcp_max_syn_backlog = 262144 #记录的那些尚未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_tw_recycle = 1 #开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_tw_reuse = 1 #允许将TIME-WAIT sockets重新用于新的TCP连接
net.ipv4.tcp_syncookies = 0 #当出现SYN等待队列溢出时,禁用cookies来处理
net.ipv4.tcp_synack_retries = 1 #设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量
net.ipv4.tcp_ack_retries = 1 #该参数的作用与上一个参数类似,设置内核放弃建立连接之前发送SYN包的数量
sysctl -p #执行操作
Nginx配置文件优化
vim /usr/local/nginx/conf/nginx.conf
覆盖(根据里面的参数进行修改):
全局域:
worker_processes 8; #工作进程数
worker_cpu_affinity 0001 0010 0100 1000 0001 0010 0100 1000; #指定cpu内核来运行工作进程,我的是四核CPU,所以是这样,如果是八核CPU就是00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000,以次类推
worker_rlimit_nofile 65535; #工作进程最大打开文件数
event域:
use epoll; #使用epoll事件驱动模型
worker_connections 65535; #工作进程最大连接数
multi_accept on; #设置工作进程同时接收多个网络连接
http域:
sendfile on; #允许sendfile方式传输文件
send_timeout 10s; #设置服务器和客户端连接超时时间
client_header_buffer_size 4k; #客户端请求头部的缓冲区大小
tcp_nopush on; #在一个数据包里发送所有头文件,而不一个接一个的发送
tcp_nodelay on; #不要缓存数据
keepalive_timeout 0; #服务器和客户端保持活动的时间是65秒,60秒后服务器和客户端断开连接,高并发时可以设置为0
扩展服务器的CPU和内存
这个就不在这里说了,这个大家都懂的操作,再说就没意义了。无非就是联系厂商增加CPU和内存,或者自己买CPU和内存,是云上的就扩展CPU和内存就可以了。
测试结果
看下图,本地测试时可以支持2.5w(个人PC4核8G)的并发数了,真实环境的话肯定没有这么多,因为还有很多因素,比如网络问题、服务器性能等。