ToB企服应用市场:ToB评测及商务社交产业平台

标题: 7. Nginx 工作机制&参数设置(详细解说说明) [打印本页]

作者: 一给    时间: 昨天 08:09
标题: 7. Nginx 工作机制&参数设置(详细解说说明)
7. Nginx 工作机制&参数设置(详细解说说明)

@
目录

1. Nginx 当中的   master-worker  机制原理

master-worker 工作原理图:
一个 master 管理多个 worker
  1. [root@localhost ~]# cd /usr/local/nginx/
  2. [root@localhost nginx]# ls
  3. auto     CHANGES.ru        conf       contrib       html     logs      man   proxy_temp  sbin       src
  4. CHANGES  client_body_temp  configure  fastcgi_temp  LICENSE  Makefile  objs  README      scgi_temp  uwsgi_temp
  5. [root@localhost nginx]# ./sbin/nginx
  6. [root@localhost nginx]# ps -aux | grep nginx
  7. root       2610  0.0  0.0  20572   664 ?        Ss   16:55   0:00 nginx: master process ./sbin/nginx
  8. nobody     2611  0.0  0.0  23040  1416 ?        S    16:55   0:00 nginx: worker process
  9. root       2613  0.0  0.0 112812   976 pts/0    S+   16:55   0:00 grep --color=auto nginx
  10. [root@localhost nginx]#
复制代码

2. master-worker 机制

争抢机制表示图:

上述表示图图解:
Master-Worker 模式:

上述图解:Master-Worker 模式解说说明:
2.1  accpet_mutex 办理“惊群现象”

用多进程结构而不用多线程结构的好处/理论:
Nginx 实现高并发的秘密-IO 多路复用
2.2 Nginx 的 master-worker 工作机制的优势

3. Nginx 参数设置

说明: 关于 Nginx 参数配置信息是在 nginx.conf 文件当中进行配置的。而 nginx.conf 文件存在两个目录位置。
3.1 worker_processes

需要设置多少个 worker 的设置
  1. #2 核 cpu,开启 2 个进程
  2. worker_processes     2;
  3. worker_cpu_affinity 01 10;
  4. #2 核 cpu,开启 4 个进程,
  5. worker_processes         4;
  6. worker_cpu_affinity 01 10 01 10;
  7. #4 核 cpu,开启 2 个进程,0101 表示开启第一个和第三个内核,1010 表示开启第二个和 第四个内核;
  8. worker_processes         2;
  9. worker_cpu_affinity 0101 1010;
  10. #4 个 cpu,开启 4 个进程
  11. worker_processes         4;
  12. worker_cpu_affinity 0001 0010 0100 1000;
  13. #8 核 cpu,开启 8 个进程
  14. worker_processes         8;
  15. worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
复制代码
补充: worker_cpu_affinity 明白

配置实例:
起首我们需要找到 Nginx 的配置文件 nginx.conf 文件。
这里我们的路径是在 /usr/local/nginx/conf 路径下:

  1.   2 #user  nobody;
  2.   3 worker_processes  2;
  3.   4 worker_cpu_affinity 01 10;
  4.   5
复制代码
配置好之后,我们需要执行 如下下令,查抄校验我们的配置编写的在 nginx.conf 文件当中的内容是否存在错误。
  1. [root@localhost conf]# ../sbin/nginx -t
复制代码

重新加载  nginx ,读取我们配置的信息。
  1. [root@localhost conf]# ../sbin/nginx
复制代码
如果我们的 Nginx 已经启动了,可以执行如下下令,进行一个热部署读取我们的配置文件信息。
  1. [root@localhost conf]# ../sbin/nginx -s reload
复制代码
  1. [root@localhost conf]# ps -aux | grep nginx # 查看我们的 Nginx 是否启动成功
复制代码


3.2 worker_connection

  1. 系统的最大打开文件数>= worker_connections*worker_process
  2. 根据系统的最大打开文件数来调整,worker_connections 进程连接数量要小 于等于系统的最大打开文件数,worker_connections 进程连接数量真实数量= worker_connections * worker_process
  3. 查看系统的最大打开文件数
  4. ulimit -a|grep "open files"
  5. open files (-n) 65535
复制代码
  1. [root@localhost conf]# ulimit -a|grep "open files"
复制代码

3.3 配置 Linux 最大打开文件数

  1. [root@localhost conf]# ulimit -a
  2. core file size          (blocks, -c) 0
  3. data seg size           (kbytes, -d) unlimited
  4. scheduling priority             (-e) 0
  5. file size               (blocks, -f) unlimited
  6. pending signals                 (-i) 14956
  7. max locked memory       (kbytes, -l) 64
  8. max memory size         (kbytes, -m) unlimited
  9. open files                      (-n) 1024
  10. pipe size            (512 bytes, -p) 8
  11. POSIX message queues     (bytes, -q) 819200
  12. real-time priority              (-r) 0
  13. stack size              (kbytes, -s) 8192
  14. cpu time               (seconds, -t) unlimited
  15. max user processes              (-u) 14956
  16. virtual memory          (kbytes, -v) unlimited
  17. file locks                      (-x) unlimited
复制代码

  1. [root@localhost conf]# ulimit -n 65535
复制代码

  1. * soft nofile 65535
  2. * hard nofile 65535
复制代码
在  CentOS 中使用第 1 种方式无结果,使用第 3 种方式有结果,而在 Debian 中使用第 2 种 有结果
特别说明:
如果我们采用第三种方式,报了一个,重启报错时,我们可以进行如下操作进行办理:
在 /etc/pam.d/login配置文件,在最后添加以下一条内容:
  1. session    required pam_limits.so
复制代码

可以看到软限制和硬限制的值都修改成功了。
  1. vim /etc/security/limits.conf
复制代码
  1. 59 #@student        -       maxlogins       4
  2. 60
  3. 61 * soft nofile 65535
  4. 62 * hard nofile 65535
  5. 63
  6. 64 # End of file
复制代码

重启 Linux 假造机,测试验证:
  1. [root@localhost ~]# ulimit -a # 查看系统文件支持的最大连接数
复制代码

4. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和复兴是我创作的动力源泉,我从你们身上罗致了无尽的灵感与勇气。我会将你们的鼓励留在心底,继承在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4