第7章:优化Nginx服务的进程
1、优化进程个数
worker_processes 4; #官方建议设置为cpu的总核数 # ../sbin/nginx -s reload [root@c1 conf]# ps -ef|grep nginx|grep -Ev "grep|php-fpm" root 6544 1 0 Apr16 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx nginx 8067 6544 0 07:26 ? 00:00:00 nginx: worker process nginx 8068 6544 0 07:26 ? 00:00:00 nginx: worker process nginx 8069 6544 0 07:26 ? 00:00:00 nginx: worker process nginx 8070 6544 0 07:26 ? 00:00:00 nginx: worker process 从"worker_processes 4"可知,worker进程数为4.nginx master主进程不包含在内,master为管理进程,负责调度和管理worker进程
2、优化绑定不同的nginx进程到不同的cpu上
默认情况下,nginx的多个进程可能跑到某一个cpu或cpu的某一个核上,导致nginx进程使用硬件的资源不均。次节优化是尽可能地分配
不同的nginx进程给不同的cpu处理,达到充分有效利用硬件的多cpu多核资源的目的
worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000; #这里的0001 0010 0100 1000是掩码,分别代表第1、2、3、4核cpu,由于worker_processes进程数为4,因此,上述配置会把每个进程 一核cpu处理,默认情况下不会绑定任何cpu,参数位置为main段
3、优化nginx时间处理模型
nginx的连接处理机制在不同的操作系统会采用不同的I/O模型,在Linux下,nginx使用epoll的I/O多路复用模型,在FreeBSD使用kqueue的
I/O多路复用,在Solaris中使用/dev/poll方式,在Windows中使用的是icop等等
这里用是cnetos系统,具体配置如下
events {
use epoll;
......
}
4、调整nginx单个进程允许的客户端最大连接数
events {
......
worker_connections 20480;
}
worker_connections用于定义nginx每个进程的最大连接数,默认是1024。nginx总并发连接数=worker数量*worker_connections,进程的最大连接数受linux
系统进程的最大文件数限制,在执行操作系统命令“ulimit -HSn 65535”或配置相应文件后,worker_connections设置才能生效
5、配置nginx worker进程最大打开文件数
worker_rlimit_nofile 65535; 可以设置系统优化后的ulimit -HSn的结果,放置在main段
每天进步一点,加油!
浙公网安备 33010602011771号