Nginx优化之服务性能优化

优化Nginx服务的worker进程个数

修改nginx主配置文件

worker_processes 1;  #指定了Nginx要开启的进程数,结尾数字就是进程个数

Nginx有Master进程和worker进程之分,Master为管理进程,真正接待“顾客”的是worker进程。

优化Nginx进程个数的策略

(1)worker_processes参数大小的设置最好和网站的用户数量相关联,

(2)新搭建服务器时,worker进程数最开始的设置可以等于CPU的核数,高流量高并发场合也可以考虑将进程数提高至CPU核数*2

查看Web服务器CPU硬件资源信息

通过/proc/cpuinfo可查看CPU个数及总核数。查看CPU总核数的示例如下:

grep processor /proc/cpuinfo 
processor   : 0
processor   : 1
processor   : 2
processor   : 3

grep processor /proc/cpuinfo | wc -l
4               #表示为1颗CPU四核
#查看CPU总颗数示例如下:
grep "physical id" /proc/cpuinfo 
physical id : 0     #物理ID一致,同一颗CPU
physical id : 0     #物理ID一致,同一颗CPU
physical id : 0     #物理ID一致,同一颗CPU
physical id : 0     #物理ID一致,同一颗CPU
grep "physical id" /proc/cpuinfo | sort | uniq | wc -l
1               #去重复,表示1颗CPU

修改重启后的worker进程数量,如下:

ps -ef | grep "nginx" | grep -v grep
root       1110      1  0 11:12 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      1429   1110  0 11:33 ?        00:00:00 nginx: worker process      
nginx      1430   1110  0 11:33 ?        00:00:00 nginx: worker process      
nginx      1431   1110  0 11:33 ?        00:00:00 nginx: worker process      
nginx      1432   1110  0 11:33 ?        00:00:00 nginx: worker process     

从“worker_processes 4”可知,worker进程数为4个。Nginx Master主进程不包含在这个参数内,Nginx Master的主进程为管理进程,负责调度和管理worker进程。

Nginx事件处理模型优化

在Linux下,Nginx使用epoll的I/O多路复用模型,在Freebsd中使用kqueue的I/O多路复用模型,在Solaris中使用/dev/poll方式的I/O多路复用模型,在Windows中使用的是icop,等等。

也可以不指定事件处理模型,Nginx会自动选择最佳的事件处理模型服务。 

#具体的配置参数如下:
events      #events指令是设定Nginx的工作模式及连接数上限
{
    use epoll;     #use是一个事件模块指令,用来指定Nginx的工作模式。Nginx支持的工作模式有select,poll,kqueue,epoll,rtsig和/dev/poll。
  其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。
  对于Linux系统Linux2.6+内核,推荐选择epoll工作模式,这是高性能高并发的设置 }

调整Nginx单个进程允许的客户端最大连接数

调整Nginx单个进程允许的客户端最大连接数,控制参数为work_connections。 (worker_connections的值要根据具体服务器性能和程序的内存使用量来指定)

events  #events指令是设定Nginx的工作模式和连接数上线
{
    worker_connections 20480;
    #worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024.最大客户端连接数由worker_processes和worker_connections决定,
  即Max_client
= worker_processes*worker_connections。进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令
  “ulimit -HSn 65535”或配置相应文件后,worker_connections的设置才能生效。 }

实际的并发连接数除了受worker_connections参数控制外,还和最大打开文件数worker_rlimit_nofile有关,Nginx总并发连接=worker数量*worker_connections。 

配置Nginx worker进程最大打开文件数

worker_rlimit_nofile 65535;
#最大打开文件数,可设置为系统优化后的ulimit     -HSn的结果

放置位置:主标签段  此参数的作用是改变worker processes能打开的最大文件数 

 

猜你喜欢

转载自www.cnblogs.com/ywrj/p/9388925.html