Nginx是一个高性能的Web服务器和反向代理服务器,常用于处理高并发的请求。以下是一些常见的Nginx性能调优策略:
一、调整worker_processes和worker_connections
在Nginx配置文件中,可以通过worker_processes和worker_connections参数来调整worker进程的数量和每个进程能够处理的最大连接数。通常来说,worker_processes的数量应该设置为服务器上可用的CPU核心数,而worker_connections的数量应该根据服务器的硬件配置和预期的并发连接数进行调整。
一般一个进程足够了,你可以把连接数设得很大。如果有SSL、gzip这些比较消耗CPU的工作,而且是多核CPU的话,可以设为和CPU的数量一样。或者要处理很多很多的小文件,而且文件总大小比内存大很多的时候,也可以把进程数增加,以充分利用IO带宽(主要似乎是IO操作有block)。
worker_processes,工作进程数
默认:worker_processes: 1
调大:worker_processes: CPU核心数,(双核4线程,可以设置为4)
worker_connections,单个工作进程(worker)可以允许同时建立外部连接的数量
数字越大,能同时处理的连接越多
默认:worker_connections: 1024
调大:worker_connections: 100000,(调大到10万连接)
二、如何配置数值大小
系统的最大打开文件数>= worker_connections*worker_process
根据系统的最大打开文件数来调整,worker_connections进程连接数量要小于等于系统的最大打开文件数,worker_connections进程连接数量真实数量= worker_connections*worker_process
查看系统的最大打开文件数
[root@yhg-server ~]# ulimit -a|grep “open files”
open files (-n) 65535
三、在主配置文件nginx.conf中配置
user root;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
工作进程数(我的服务器是8核,所以配置8)
worker_processes 8;
worker_rlimit_nofile 65535;
events {
单个进程允许的客户端最大连接数(65535/2)
worker_connections 32000;
}
四、max_clients
从用户的角度,http 1.1协议下,由于浏览器默认使用两个并发连接,因此计算方法:
nginx作为http服务器的时候:
max_clients = worker_processes * worker_connections/2
nginx作为反向代理服务器的时候:
max_clients = worker_processes * worker_connections/4
五、CPU相关信息查看
物理CPU个数
cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l
逻辑CPU个数:(核数)
cat /proc/cpuinfo | grep “processor” | wc -l
每个物理CPU中Core的个数:
cat /proc/cpuinfo | grep “cpu cores” | wc -l
查看CPU型号
cat /proc/cpuinfo | grep ‘model name’ |uniq