nginx性能优化

  1. 修改nginx的work_processes进程数量 woker_processes 8;
    一般和CPU的核数设置一致;高并发可以和CPU核数2倍
    可用lscpu命令查看cpu核心数或者 /proc/cpuinfo \ top按1
    一般1个核心处理1件事情
    Intel超线程技术可以做到1个核心处理2件事情 nginx主配置内进行修改
    http模块下添加
    woker_processes 8;
  2. nginx服务进程均匀分配到不同cpu上进行处理 利用worker_cpu_affinity进行优化(cpu亲和力)让CPU的每隔核心平均
    4颗CPU优化配置参数为0001 0010 0100 1000
    2颗CPU优化配置参数为0101 1010
worker_cpu_affinity  0101 1010;
worker_cpu_affinity auto;

Linux系统设置cpu亲和力taskset (15k) 2核cup为例
Nginx主配置文件中在http模块下编写

woker_processes 2;
worker_cpu_affinity 0101 1010;
Worker_cpu_affinity auto;
  1. 优化 nginx 事件处理模型
    利用use epoll参数修改事件模型为epoll模型
    事件模型指定配置参数放置在event区块中

nginxepoll 处理数据异步
apacheselect处理数据同步
参考: https://blog.csdn.net/xululu123/article/details/87526768
网络io阻塞时 也是nginx采取的方式,不会一直等,而是转而去处理其他请求。这就是异步非阻塞IO

  1. 优化nginx单进程客户端连接数 利用worker_connections连接参数进行调整
    用户最大并发连接数=worker进程数(乘)worker连接数
    最大连接数 = worker_processes * worker_connections/4
    查看相关资料,生产环境中worker_connections 建议值最好超过9000
  1. 优化nginx服务进程打开文件数 利用worker_rlimit_nofile参数进行调整(65535)
    还需要将linux系统文件最大打开数作出修改
    使用ulimit -a可查看 默认1024 左侧命令修改为65535
    重登shell即可 echo '* - nofile 65535' >>/etc/security/limits.conf

  2. 优化nginx服务数据高效传输模式 利用sendfile on开启高效传输模式
    tcp_nopush on 表示将数据积攒到一定的量再进行传输 数据量较多时使用 避免网络阻塞
    tcp_nodelay on 表示将数据信息进行快速传输
    数据量较少时 提高数据传输效率
    sendfile on配合使用两个参数使用
    但两个参数只能选其一 需要特别注意

  1. 优化nginx服务超时信息 keepalive_timeout 优化客户端访问nginx服务端超时时间
    http协议特点: 连接断开后会给你保留一段时间
    client_header_timeout 优化服务端读请求头超时时间
    client_body_timeout 优化两个请求主体发送间隔超时时间
    send_timeout 优化两个响应信息的间隔超时时间
keepalive_timeout   60;  
client_header_timeout  30;
client_body_timeout   20;
send_timeout  20;
  1. 优化 nginx 服务与 FastCGI 连接缓存和缓冲信息
    优化利用FastCGI与PHP连接缓冲信息
    优化利用FastCGI与PHP连接缓存信息
image.png
  1. 配置nginx gzip压缩实现性能优化 当文件大于一定数值时 我们传输数据就需要进行压缩 以节省网站的带宽资源
gzip on; 
gzip_min_length 1k; #c设置大于1K才进行压缩 
gzip_buffers 4 16k;  #c设置压缩缓存 
#gzip_http_version 1.0; 
gzip_comp_level 2;  
#c压缩级别 数字越大 压缩率(占用空间)越小 占用CPU越多 
gzip_types  text/plain  application/x-javascript text/css  application/xml  text/javascript  application/x-httpd-php ;
#c哪些类型的文件 需要进行压缩 这些类型需用 mime type 媒体类型. 
#mime types       #c媒体类型(http) === 文件类型(linux)
gzip on; 
gzip_min_length 1k; 
gzip_buffers 4 16k; 
#gzip_http_version 1.0; 

gzip_comp_level 2; gzip_types  text/plain  application/x-javascript  text/css application/xml  text/javascript  application/x-httpd-php;

#mime types
#c媒体类型(http) === 文件类型(linux)
  1. 配置nginx expires 实现让客户端缓存数据 利用location匹配相应要缓存的信息,利用expires参数结合时间信息进行缓存。
    把数据缓存到浏览器中. expires 30d; 缓存30天
location ~* \.(gif|jpg|jpeg|png|bmp|ico)$ { 
root /var/www/img/;
expires 30d; 
}

你可能感兴趣的:(nginx性能优化)