Fork me on GitHub

nginx的性能优化

  全局中修改

  一、按内核核数修改CPU进程

vim /apps/nginx/conf/nginx.conf

worker_processes  auto;

这里编译安装不是按照核数来的,yum安装配置文件默认是auto

  二、进程绑定CPU,利用缓存提高运行效率

  1、修改配置

vim /etc/nginx/nginx.conf 

  2、添加CPU亲缘性

worker_cpu_affinity 00000000 00000000 00000000 00000000;

(这里八核CPU就写8个0 ,4个线程就写4次8个0,我这里只开了4个线程)

  3、绑定CPU

worker_cpu_affinity 00000001 00000010 00000100 00001000;

(这里表示,第一个线程绑定在第一个和,第二个线程绑定在第二个核,以此类推,1在第几位则表示绑定在第几个核上)

  4、由于只用四核cpu可以省略前面四个0

worker_cpu_affinity 0001 0010 0100 1000;

 5、查看nginx进程绑定在哪个CPU上

ps axo pid,cmd,psr |grep nginx
  2293 nginx: master process nginx   7
  2772 nginx: worker process         0
  2773 nginx: worker process         1
  2774 nginx: worker process         2
  2775 nginx: worker process         3
  2896 grep --color=auto nginx       1

  三、修改优先级,将nginx的优先级调到最高(官方nice值-20-20实际nice值-20-19,nice值最大19,设置100也是19)

  1、查看目前优先级

ps axo pid,cmd,nice |grep nginx
  2293 nginx: master process nginx   0
  2772 nginx: worker process         0
  2773 nginx: worker process         0
  2774 nginx: worker process         0
  2775 nginx: worker process         0
  3145 grep --color=auto nginx       0

  2、调整优先级为nice最高值-20

worker_priority -20;

  3、重读服务

nginx -s reload 

  4、查看当前优先级

ps axo pid,cmd,nice |grep nginx
  2293 nginx: master process nginx   0
  3288 nginx: worker process       -20
  3289 nginx: worker process       -20
  3290 nginx: worker process       -20
  3291 nginx: worker process       -20
  3325 grep --color=auto nginx       0

   四、修改所有worker进程能打开的文件数量上限,(最好与ulimit -n 的值保持一致,如65535)

  1、查看默认ulimit 值

ulimit  -n
1024

  2、临时修改ulimit值

ulimit -n 1025

  3、永久修改ulimit值

vim /etc/security/limits.conf

  4、添加这两行

* soft nofile 65535
* hard nofile 65535

  5、在nginx 的配置文件中添加值

vim /etc/nginx/nginx.conf 

worker_rlimit_nofile 65535

ulimit值按实际硬件设置,设置过大会加重负载

以上的都是在全局中修改的,只需要nginx -s reload 重读服务即可,不需要重启服务

  events中修改

  一、修改请求的方式

accept_mutex on ;

处理新的连接请求的方法;on指由各个worker轮流处理新请求,Off指每个新请求的到达都会通知(唤醒)所有的worker进程,但只有一个进程可获得连接,造成“惊群”,影响性能,默认值为off,可优化为on

  二、修改worker进程接受数

multi_accept on;

此指令默认为off,即默认为一个worker进程只能一次接受一个新的网络连接, on表示每个woker进程可以同时接受所有新的网络连接,修改为on可以提高并发量

  http中修改 

  一、不延迟发送,多个包才确认一次

tcp_nodelay on ;

在keepalived模式下的连接是否启用TCP_NODELAY选项,即Nagle算法
当为off时,延迟发送,每发送一个包就需要确认ACK,才发送下一个包
默认On时,不延迟发送,多个包才确认一次
可用于:http, server, location

  二、在开启sendfile,on时合并响应头和数据体在一个包中一起发送

tcp_nopush on ;

  三、是否启用sendfile功能,在内核中封装报文直接发送,默认Off

sendfile on ;

 

posted @ 2021-05-28 11:08  Alex-Lzy  阅读(250)  评论(0编辑  收藏  举报