Nginx调优

一、Nginx进程

[root@wzy ~]# ps aux | grep nginx | grep -v "grep"

nginx 进入容器修改配置文件 nginx 进程数如何设置_nginx

其中,master是监控进程,也叫主进程,worker是工作进程,还有cache相关进程,关系如图:

nginx 进入容器修改配置文件 nginx 进程数如何设置_nginx_02

以直接理解为master进程是管理worker进程,而worker进程才是为用户提供服务的。

二、设置Nginx运行进程个数

Nginx运行进程个数一般我们设置CPU的核心或者核心数x2,如果你不了解,top命令之后按1也可以看出来。也可以查看/proc/cpuinfo文件

设置nginx中进程数

在nginx.conf的全局设置中修改

[root@wzy ~]# vi /usr/local/nginx/conf/nginx.conf

改:worker_processes  1;

为worker_processes  4;

三、Nginx事件处理模型

[root@wzy ~]# vi /usr/local/nginx/conf/nginx.conf

nginx 进入容器修改配置文件 nginx 进程数如何设置_Nginx_03

nginx采用epoll事件模型,处理效率高

worker_connections是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections

四、http主体优化

开启高效传输模式

[root@wzy ~]# vi /usr/local/nginx/conf/nginx.conf

nginx 进入容器修改配置文件 nginx 进程数如何设置_nginx_04

sendfile        on;

开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,当nginx是一个静态文件服务器的时候,开启sendfile配置项能大大提高nginx的性能。

tcp_nopush     on;

必须在sendfile开启模式才有效,防止网络阻塞,积极的减少网络报文段的数量(将响应头和响应体两部分一起发送,而不一个接一个的发送。)

五、长连接超时时间

主要目的是保护服务器资源,CPU,内存,控制连接数,因为建立连接也是需要消耗资源的

[root@wzy ~]# vim /usr/local/nginx/conf/nginx.conf

   keepalive_timeout  65;       

keepalived_timeout  与client的keep-alive连接超时时间,单位是秒。服务器将会在这个时间后关闭连接,长连接可以减少重建连接的开销,如果设置时间过长,用户又多,长时间保持连接会占用大量资源。

六、Gzip调优

6.1、启用gzip

使用gzip压缩功能,可能为我们节约带宽,加快传输速度,有更好的体验,也为我们节约成本,所以说这是一个重点

Nginx启用压缩功能需要你来ngx_http_gzip_module模块,apache使用的是mod_deflate

一般我们需要压缩的内容有:文本,js,html,css,对于图片,视频,flash不压缩,同时也要注意,我们使用gzip的功能是需要消耗CPU的!

在http{}区域中添加

[root@wzy~]# vi /usr/local/nginx/conf/nginx.conf

      gzip on;

      gzip_min_length  1k;

      gzip_buffers     4 32k;

      gzip_http_version 1.1;

      gzip_comp_level 6;

      gzip_types  text/css text/xml application/javascript;

      gzip_vary on;

nginx 进入容器修改配置文件 nginx 进程数如何设置_Nginx_05