nginx:性能优化

优化方法论

   (1)从软件层面提升硬件使用效率

        ①增大CPU的利用率

         ②增大内存的利用率

         ③增大磁盘IO的利用率

         ④增大网络带宽的利用率

   (2)提升硬件规格

        ①网卡:万兆网卡,例如10G,25G,40G等

        ②磁盘:固态硬盘,关注IOPS和BPS指标

        ③CPU:更快的主频,更多的核心,更大的缓存,更优的架构

        ④内存:更快的访问速度

     (3)超出硬件性能上限后使用DNS

 

如何增大nginx使用CPU的有效时长?

(1)能够使用全部CPU资源

        ①master-worker多进程架构

       ②worker进程数量应当大于等于CPU核数(master进程只是负责管理,worker进程为实际工作进程)

(2)Nginx进程间不做无用功浪费CPU资源

      ①worker进程不应在繁忙时,主动让出CPU(多个worker进程间不应由于争抢造成资源耗散。worker进程应当等于CPU核数)

     ②worker进程不应调用一些API导致主动让出CPU,拒绝类似的第三方模块

(3)不被其他进程争抢资源

       ①提升优先级占用CPU更长时间

      ②减少操作系统上耗资源的非Nginx进程

1.worker_processes 指令

   语法:worker_processes   number | auto(选用auto时,自动选择跟CPU核数相同)

   默认:worker_processes  1;

   放置位置:main

 

为何一个CPU就可以同时运行多个进程?

   在宏观上并行,微观上串行

   把进程的运行时间分为一段段的时间片,OS调度系统依次选择每个进程,最多执行时间片指定的时长

 

阻塞API引发的时间片内主动让出CPU

        (1)速度不一致引发的阻塞API(硬件执行速度不一致,例如CPU和磁盘

        (2)业务场景产生的阻塞API(例如同步读网络报文)

 

减少进程间的切换(是指CPU从一个进程或线程切换到另一个进程或线程。花费5us)

  (1)使nginx  worker进程尽可能处于运行状态

  (2)尽可能减少进程间切换(Linux命令:  vstat,dstat, pidstat -w -p  进程号  1)

  (3)绑定CPU

什么决定CPU时间片的大小?

   (1)Nice静态优先级:-20 —— 19   (越小优先级越高,一般把nginx调到-20)

 1.worker_priority指令(设置worker进程的静态优先级)

   语法:worker_priority   number;

   默认:worker_priority      0;

   放置位置:main

(2)Priority动态优先级:0——139

 

提升CPU缓存命中率:worker_cpu_affinity

1.worker_cpu_affinity指令(绑定worker到指定CPU

  语法:worker_cpu_affinity cpumask.......;      worker_cpu_affinity  auto(自动一个worker绑定一颗CPU)

  默认:空

  放置位置:main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值