通过top命令,然后按数字1,即可显示所有的CPU核数,如下:
4.修改服务器Nginx配置我的服务器时1核2G,假设服务器的CPU颗数为1颗,核数为4核,我们将参数值改为4
worker_processes 4;修改并保存后,优雅重启Nginx,使修改生效,如下:
nginx -s reload现在检查修改后的worker进程数量,如下:
# 假如Nginx监听的是8端口 lsof -i:80 # 或者通过如下命令查看 ps -ef | grep nginx | grep -v grep从worker_process可知,worker的进程数为4个。Nginx Master主进程不包含在这个参数里,Nginx Master的主进程为管理进程,负责调度和管理worker进程。
绑定不同的Nginx进程到不同的CPU上默认情况下,Nginx的多个进程有可能跑在某一个CPU或CPU的某一核上,导致Nginx进程使用硬件的资源不均,所以我们需要配置Nginx与CPU的亲和力参数,尽可能地分配不同的Nginx进程给不同的CPU处理,打到充分有效利用硬件的多CPU多核资源的目的。
在优化不同的Nginx进程对应不同的CPU配置时,四核CPU服务器的参数配置参考如下:
worker_processes 4; # worker_cpu_affinity就是配置Nginx进程与CPU亲和力的参数,即把不同的进程分给不同的CPU处理。这里0001 0010 0100 1000 # 是掩码,分别代表第1、2、3、4核CPU,由于worker_processes进程数为4,因此,该配置会吧每个进程分配一核CPU处理,默认情况 # 下进程不会绑定任何CPU,参数位置为main段 worker_cpu_affinity 0001 0010 0100 1000;八核CPU服务器的参数配置参考如下:
worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; Nginx事件处理模型优化Nginx的连接连接处理机制在不同的操作系统会采用不同的I/O模型,在Linux下,Nginx使用epoll的I/O多路复用模型,在Freebsd中使用kqueue的I/O多路复用模型,在Solaris中使用/dev/poll方式的I/O多路复用模型,在Windows中使用的是icop,等等。
要根据系统类型选择不同的事件处理模型,可供使用的选择有use [kqueue|rtsig|epoll|/dev/poll|select|poll]。我使用的是CentOS7,因此将Nginx的时间处理模型调整为epoll模型。
具体的配置参数如下:
# events指令是设定Nginx的工作模式及连接数上限 events { use epoll; worker_connections 10240; } # use是一个事件模块指令,用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll # 其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,kqueue用在BSD系统中。对于Linux系统Linux2.6+的内核,推荐选择epoll工作模式,这是高性能高并发的设置 调整Nginx单进程允许的客户端最大连接数接下来,调整Nginx单个进程允许的客户端最大连接数,这个控制连接数的参数为worker_connections。
events { # worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024。最大客户端连接数由 # worker_processes和worker_connections决定,即Max_client=worker_processes*worker_connections。进程 # 的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令`ulimit -HSn 65535`或配置相关文件后, # worker_connections的设置才能生效 worker_connections 10240; }说明:worker_connections用来设置一个worker process支持的最大并发连接数,这个连接数包括了所有连接,例如:代理服务器的连接、客户端的连接等,实际的并发连接数除了受worker_connections参数控制外,还和最大打开文件数 worker_rlimit_nofile有关,Nginx总并发连接=worker数量 * worker_connections。
配置Nginx worker进程最大打开文件数