ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

nginx调优

2021-07-18 15:01:41  阅读:172  来源: 互联网

标签:绑定 worker 连接数 nginx 调优 进程 CPU


一、nginx的主配置优化
1.设置进程静态优先级

(1)如果进程在CPU的时间片较长,那么它的执行优先级更高;

 

(2)进程的静态优先级NICE值(-20~19)越小,优先级越高。

top,可以查看所有进程的静态优先级;

top -u nginx,可以查看nginx的静态优先级;

 

nginx.conf:

worker_priority -20;

 

2.设置worker进程数

多核CPU,进程的数量一般大于CPU核心数,但是在nginx的体系中,worker进程是用来处理用户请求的进程,避免多个worker进程争抢一颗CPU,所以最好设置成<=CPU核心数。

lscpu,查看CPU信息

 

 

nginx.conf:

worker_processes auto|自定义值;

 

3.CPU绑定提供缓存命中率

将worker进程与CPU核心进行绑定,以便更好地利用CPU的多级缓存。

 

现在的CPU一般会有三级缓存,一级L1缓存速度最好,二级L2次之,三级L3最慢;

其中L1与L2为单插槽上单核CPU独享,L3则是单插槽上多核CPU共享。

 

 

 

 

 

根据2.worker_processes设置的绑定CPU核心数

nginx.conf:

#绑定四核CPU的4个CPU:

worker_processes 4;

   worker_cpu_affinity 0001  0010  0100  1000;

 

#绑定八核CPU的2个CPU:

worker_processes 2;

worker_cpu_affinity 00000001  00000010;

 

#两个worker进程绑定4核CPU的4个CPU:

#第一个worker进程被绑定到CPU0/CPU2;

#第二个worker进程被绑定到CPU1/CPU3;

worker_processes 2;

worker_cpu_affinity 0101  1010;

 

4.worker进程间的负载均衡

accept_mutex参数:如果启用,该参数表示多个worker进程间顺序接收新连接,关闭   的话则会让所有worker进程同时被唤醒,但只有一个worker进程   能接收处理该请求。

nginx.conf:

accept_mutex: off;

 

 

 

 

5.单个worker进程允许同时打开的连接数(高并发核心)

通过配置worker_connections来修改单个worker进程可以同时打开的连接数,默认是512,需要调大该值,但不能超过worker_rlimit_nofile。

 

connections不是随便设置的,而是与两个指标有重要关联,一是内存,二是操作系统级别的“进程最大可打开文件数”。

1.内存:每个连接数分别对应一个read_event、一个write_event事件,一个连接数大概占用232字节,2个事件总占用96字节,那么一个连接总共占用328字节,通过数学公式可以算出100000个连接数大概会占用 31M = 100000 * 328 / 1024 / 1024,当然这只是nginx启动时,connections连接数所占用的nginx。

2.进程最大可打开文件数:进程最大可打开文件数受限于操作系统,可通过 ulimit -n 命令查询,以前是1024,现在是65535,

nginx提供了worker_rlimit_nofile指令,这是除了ulimit的一种设置可用的描述符的方式。 该指令与使用ulimit对用户的设置是同样的效果。此指令的值将覆盖ulimit的值,如:worker_rlimit_nofile 20960;

设置ulimits:ulimit -SHn 65535

 

nginx.conf:

worker_connections 512;

6.所有worker进程允许同时打开的文件数(高并发核心)

一般worker_rlimit_nofile表示所有worker进程可以打开的文件句柄数,该值默认值未设置,将会受到系统级,用户级限制(注意:nginx worker进程的默认用户是nginx)。

nginx.conf:

worker_rlimit_nofile 自定义值;

 

7.使用epoll事件模型

 

标签:绑定,worker,连接数,nginx,调优,进程,CPU
来源: https://www.cnblogs.com/cool-man/p/15026564.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有