Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon
  • Nginx

    • Nginx 学习笔记
      • 1. 初识Nginx
        • 2. nginx架构基础
          • 3. nginx配置文件详解

            • 3.1 nginx全局块和events块配置
              • 1 example
                • 2 配置CPU参数
                  • 2.1 nginx worker_processes
                    • 2.2 nginx worker_cpu_affinity
                      • 2.3 实例
                    • 3.2 nginxHTTP块配置
                      • 3.3 nginxSERVER块配置
                        • 3.4 nginxLOCATION块配置
                          • 3.5 nginx常用模块
                          • 4. 内核参数优化
                            • 5. 状态码
                              • 6. nginx的常见问题
                              • Tomcat

                                • Tomcat 学习笔记
                                  • 生产环境中的tomcat配置
                                    • tomcat假死现象
                                      • Tomcat “缓存”清理
                                        • tomcat注意事项
                                          • Tomcat 错误代号及状态码

                                          3.1 nginx全局块和events块配置

                                          author iconClaycalendar icon2020年3月20日category icon
                                          • web中间件
                                          tag icon
                                          • Nginx
                                          timer icon大约 2 分钟

                                          此页内容
                                          • 1 example
                                          • 2 配置CPU参数
                                            • 2.1 nginx worker_processes
                                            • 2.2 nginx worker_cpu_affinity
                                            • 2.3 实例

                                          # 3.1 nginx全局块和events块配置

                                          # 1 example

                                          # 运行Nginx进程的用户
                                          user nginx;
                                          worker_processes  8;
                                          worker_cpu_affinity auto;
                                          
                                          # 定义存储某类型的全局错误的日志位置
                                          # nginx日志分为很多级别 [debug | info | notice | warn | error | crit | alert | emerg]
                                          error_log  /var/log/nginx/error.log  error;
                                          # 指定进程ID(pid)存放的路径 
                                          pid        /var/run/nginx.pid;
                                          # 一个nginx进程打开的最多文件描述符数目,理论值应该是系统的最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
                                          worker_rlimit_nofile 65535;
                                          
                                          events {
                                              # 使用epoll的I/O模型,用这个模型来高效处理异步事件
                                              use epoll;
                                              # 每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。
                                              worker_connections  20480;
                                          }
                                          
                                          1
                                          2
                                          3
                                          4
                                          5
                                          6
                                          7
                                          8
                                          9
                                          10
                                          11
                                          12
                                          13
                                          14
                                          15
                                          16
                                          17
                                          18
                                          19

                                          # 2 配置CPU参数

                                          Nginx默认没有开启利用多核cpu,我们可以通过增加worker_cpu_affinity配置参数来充分利用多核cpu的性能。cpu是任务处理,计算最关键的资源,cpu核越多,性能就越好。

                                          # 2.1 nginx worker_processes

                                          worker_processes最多开启8个,8个以上性能就不会再提升了,而且稳定性会变的更低,因此8个进程够用了;

                                          # 2.2 nginx worker_cpu_affinity

                                          cpu有多少个核?就有几位数,1代表内核开启,0代表内核关闭;

                                          例如:我有一个服务器是最低配,8核CPU,nginx配置信息则如下:

                                          worker_processes 8;
                                          worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
                                          
                                          1
                                          2

                                          上面的配置表示:8核CPU,开启8个进程。

                                          我其实把nginx worker_cpu_affinity参数通常设置为auto

                                          # 2.3 实例

                                          2核CPU,开启2个进程

                                          worker_processes 2;
                                          worker_cpu_affinity 01 10;
                                          
                                          1
                                          2

                                          2核CPU,开启4进程

                                          worker_processes 4;
                                          worker_cpu_affinity 01 10 01 10;
                                          
                                          1
                                          2

                                          2核CPU,开启8进程

                                          worker_processes 8;
                                          worker_cpu_affinity 01 10 01 10 01 10 01 10;
                                          
                                          1
                                          2

                                          8核CPU,开启2进程

                                          worker_processes 2;
                                          worker_cpu_affinity 10101010 01010101;
                                          
                                          1
                                          2

                                          10101010表示开启了第2,4,6,8内核,01010101表示开始了1,3,5,7内核;

                                          如果多个CPU内核的利用率都相差不多,证明nginx己经成功的利用了多核CPU。

                                          测试结束后,CPU内核的负载应该都同时降低。

                                          edit icon编辑此页open in new window
                                          上次编辑于: 2022/4/27 15:33:00
                                          贡献者: clay-wangzhi
                                          下一页
                                          3.2 nginxHTTP块配置
                                          备案号:冀ICP备2021007336号
                                          Copyright © 2023 Clay