nginx的worker进程的个数
worker_processes 1;用于指定nginx运行时worker进程的个数,在nginx运行时,每个worker进程都是单线程运行的,这里需要判断worker进程是否进行了阻塞性操作,如果有这样的操作,那么稍微多配置一些worker进程比较好,如果没有,那么将worker进程数量设置得与CPU数量一样能够得到更好的性能。
绑定nginx的worker进程到指定的CPU内核
worker_cpu_affinity cpumask [cpumask...]将worker进程与指定的CPU进行绑定,这样能够防止多个worker进程抢占同一个CPU,从而避免出现同步问题。如下是一个4核CPU的配置方式:
worker_processes 4;worker_cpu_affinity 1000 0100 0010 0001;需要注意的是,worker_cpu_affinity仅对于Linux系统有效。
SSL硬件加速
ssl_engine device;如果服务器上有SSL硬件加速设备,那么就可以进行配置以加快SSL协议的处理速度。用户可以使用OpenSSL提供的命令来查看是否有SSL硬件加速设备:
openssl engine -t系统调用gettimeofday的执行频率
timer_resolution -t默认情况下,每次内核的事件调用返回时,都会执行一次gettimeofday,在早期的Linux版本中,获取系统时间都会有一次从内核态到用户态的数据复制,其代价比较高,但是在最新的x86-64体系架构中,gettimeofday仅仅只是一次vsyscall,其仅仅只是对共享内存页中的数据的访问,代价不大。
nginx的worker进程优先级
worker_priority nice;用于设置nginx的worker进程的优先级,其中,nice的默认值为0。在Linux操作系统中,当有多个进程在竞争CPU执行资源时,其就会根据每个进程设置的优先级来优先分配执行权限,并且所分配的时间片也要高一些。优先级的值在-20~+19之间,数值越低优先级越高,一般建议将nginx的优先级设置得更低一些,这样才能保证其执行的权限,但是建议不要设置得比内核的进程优先级(其值为-5)还要低。