第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段
posted @ 2016-04-17 11:43  sellsa  阅读(200)  评论(0)    收藏  举报