深入理解Nginx——性能调优

Nginx优化性能的配置项的相关介绍
(1)Nginx worker 进程个数

语法∶ worker_processes number;
默认∶ worker_processes 1;
在 master/worker 运行方式下,定义 worker 进程的个数。
worker 进程的数量会直接影响性能。那么,用户配置多少个 worker 进程才好呢?这实际上与业务需求有关。

每个 worker 进程都是单线程的进程,它们会调用各个模块以实现多种多样的功能。如果这些模块确认不会出现阳塞式;的调用,那么,有多少 CPU 内核献就应该配置多少个进程;反之,如果有可能出现阻塞式调用,那么需要配置稍多一些的 worker 进程。

例如,如果业务方面会致使用户请求大量读取本地磁盘上的静态资源文件,而且服务器上的内存较小,以至于大部分的请求访问静态资源文件时都必须读取磁盘(磁头的寻址是缓慢的),而不是内存中的磁盘缓存,那么磁盘 I/O 调用可能会阻塞住 worker 进程少量时间,进而导致服务整体性能下降。

多 worker 进程可以充分利用多核系统架构,但若 worker 进程的数量多于 CPU 内核数,那么会增大进程间切换带来的消耗(Linux 是抢占式内核)。一般情况下,用户要配置与 CPU内核数相等的 worker 进程,并且使用下面的 worker_cpu_affinity 配置来绑定 CPU 内核。

(2)绑定 Nginx worker 进程到指定的 CPU 内核

语法∶ worker_cpu_affinity cpumask [cpumask…]
为什么要绑定 worker 进程到指定的 CPU 内核呢?假定每一个 worker 进程都是非常繁忙的,如果多个 worker 进程都在抢同一个 CPU,那么这就会出现同步问题。反之,如果每一个 worker 进程都独享一个 CPU,就在内核的调度策略上实现了完全的并发。
例如,如果有 4 颗 CPU 内核,就可以进行如下配置∶

worker_processes 4;
worker_cpu_affinity 1000 0100 0010 0001;
(3)SSL 硬件加速

语法∶ ssl_engine device;
如果服务器上有 SSL 硬件加速设备,那么就可以进行配置以加快 SSL 协议的处理速度。用户可以使用 OpenSSL 提供的命令来查看是否有 SSL 硬件加速设备;
opensBl engine -t

(4)系统调用 gettimeofday 的执行频率

语法∶ timer_resolution t;
默认情况下,每次内核的事件调用(如 epoll、select、poll、kqueue 等)返回时,都会执行一次 gettimeofday,实现用内核的时钟来更新 Nginx 中的缓存时钟。在早期的 Linux 内核中,gettimeofday 的执行代价不小,因为中间有一次内核态到用户态的内存复制。当需要降低 gettimeofday 的调用频率时,可以使用 timer_resolution 配置。例如,"timer resolution 100ms;"表示至少每 100ms 才调用一次 gettimeofday。

但在目前的大多数内核中,如x86-64 体系架构,gettimeofday 只是一次 vsyscall,仅仅对共享内存页中的数据做访问,并不是通常的系统调用,代价并不大,一般不必使用这个配置。而且,如果希望日志文件中每行打印的时间更准确,也可以使用它。

(5)Nginx worker 进程优先级设置

语法∶ worker_priority nice;
默认∶ worker priority 0;
该配置项用于设置 Nginx worker 进程的 nice 优先级。

在 Linux 或其他类 UNIX 操作系统中,当许多进程都处于可执行状态时,将按照所有进程的优先级来决定本次内核选择哪一个进程执行。进程所分配的 CPU 时间片大小也与进程优先级相关,优先级越高,进程分配到的时间片也就越大(例如,在默认配置下,最小的时间片只有 5ms,最大的时间片则有 800ms)。这样,优先级高的进程会占有更多的系统资源。

优先级由静态优先级和内核根据进程执行情况所做的动态调整 (目前只有 ±5 的调整)共同决定。nice 值是进程的静态优先级,它的取值范围是-20 ~+19,-20是最高优先级,+19 是最低优先级。因此,如果用户希望Nginx占有更多的系统资源,那么可以把 nice 值配置得更小一些,但不建议比内核进程的 nice 值(通常为-5)还要小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三月微风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值