IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 描述nginx中worker_processes、worker_cpu_affinity、worker_rlimit_nofile、worker_connections配置项的含义 -> 正文阅读

[系统运维]描述nginx中worker_processes、worker_cpu_affinity、worker_rlimit_nofile、worker_connections配置项的含义

描述nginx中worker_processes、worker_cpu_affinity、worker_rlimit_nofile、worker_connections配置项的含义

nginx 配置文件格式说明

  • 配置文件由指令与指令块构成
  • 每条指令以;分号结尾,指令与值之间以空格符号分隔
  • 可以将多条指令放在同一行,用分号分隔即可,但可读性差,不推荐
  • 指令块以{ }大括号将多条指令组织在一起,且可以嵌套指令块
  • include语句允许组合多个配置文件以提升可维护性
  • 使用#符号添加注释,提高可读性
  • 使用$符号使用变量
  • 部分指令的参数支持正则表达式

1.worker_processes

启动Nginx工作进程的数量,一般设为和CPU核心数相同,auto:自动检测,设置为当前主机cpu的核心数

worker_processes [number | auto];  

[root@centos7 ~]#ps aux|grep nginx
root       1301  0.0  0.0  46344  2020 ?        Ss   18:52   0:00 nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx      2011  0.0  0.1  46772  2276 ?        S    21:21   0:00 nginx: worker process
root       2211  0.0  0.0 112808   968 pts/1    S+   22:54   0:00 grep --color=auto nginx

#将工作进程的数量设置为2个
[root@centos7 ~]#vim /apps/nginx/conf/nginx.conf
worker_processes  2;
[root@centos7 ~]#nginx -s reload
[root@centos7 ~]#ps aux|grep nginx
root       1301  0.0  0.1  46232  2060 ?        Ss   18:52   0:00 nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx      2241  0.0  0.0  46652  1932 ?        S    23:02   0:00 nginx: worker process
nginx      2242  0.0  0.0  46652  1932 ?        S    23:02   0:00 nginx: worker process
root       2244  0.0  0.0 112808   968 pts/1    S+   23:02   0:00 grep --color=auto nginx

2.worker_cpu_affinity

将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。

worker_cpu_affinity 00000001 00000010 00000100 00001000 | auto;

CPU MASK: 00000001:0号CPU
          00000010:1号CPU
          10000000:7号CPU

[root@centos7 ~]#ps axo pid,cmd,psr |grep nginx
  1301 nginx: master process /apps   1
  2241 nginx: worker process         0
  2242 nginx: worker process         0
  2340 grep --color=auto nginx       1

#将第一个工作进程绑定到 CPU0,将第二个工作进程绑定到 CPU1
[root@centos7 ~]#vim /apps/nginx/conf/nginx.conf
worker_processes  2;
worker_cpu_affinity 01 10;
[root@centos7 ~]#nginx -s reload
[root@centos7 ~]#ps axo pid,cmd,psr |grep nginx
  1274 nginx: master process /apps   0
  2029 nginx: worker process         0
  2030 nginx: worker process         1
  2036 grep --color=auto nginx       1

3.worker_rlimit_nofile

所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制。最好与ulimit -n 或者limits.conf的值保持一致。用于在不重新启动主进程的情况下增加限制。

#设置工作进程的最大打开文件数为65536
[root@centos7 ~]#vim /apps/nginx/conf/nginx.conf
worker_rlimit_nofile 65536;

[root@centos7 ~]#ulimit -n 100000
[root@centos7 ~]#ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7835
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 100000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 7835
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

#修改PAM资源限制
[root@centos7 ~]#vim /etc/security/limits.conf
*                soft    core            unlimited
*                hard    core            unlimited
*                soft    nproc           1000000
*                hard    nproc           1000000
*                soft    nofile          1000000
*                hard    nofile          1000000
*                soft    memlock         32000
*                hard    memlock         32000
*                soft    msgqueue        8192000
*                hard    msgqueue        8192000

#重启生效
[root@centos7 ~]#reboot
[root@centos7 ~]#ulimit -n
1000000
[root@centos7 ~]#ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7835
max locked memory       (kbytes, -l) 32000
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1000000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 8192000
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1000000
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

4.worker_connections

设置单个工作进程可以同时打开的最大连接数。这个数字包括所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接。另一个考虑是实际同时连接数不能超过当前最大打开文件数限制,可以通过 worker_rlimit_nofile更改。

  • 作为web服务器的时候最大并发数为:worker_connections * worker_processes
  • 作为反向代理的时候为:(worker_connections * worker_processes)/2
[root@centos7 ~]#vim /apps/nginx/conf/nginx.conf
events {
    worker_connections  10240;
    accept_mutex on;
    multi_accept on;
}

[root@centos7 ~]#nginx -s reload

5、Nginx性能优化建议

Syntax:accept_mutex on | off;
Default:accept_mutex off;
Context:events

#建议设置为accept_mutex on; 

如果accept_mutex启用,工作进程将依次接受新连接,默认为off。否则,将通知所有工作进程有关新连接的信息,如果新连接量较低,则某些工作进程可能只是浪费系统资源,在高并发场景下,建议设置为on。

Syntax:multi_accept on | off;
Default:multi_accept off;
Context:events

#建议设置为multi_accept on; 

如果multi_accept禁用,工作进程将一次接受一个新连接,默认为off。开启后,工作进程将一次接受所有新连接。建议设置为on

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 19:10:50  更:2022-03-30 19:14:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:22:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码