Nginx worker进程个数
语法:worker_processes number;
默认:worker_processes 1;
作用:在master_worker运行方式下,定义worker进程的个数。worker进程的数量会直接影响性能。那么,配多少个合适呢?根据业务需求。每个worker都是单线程的进程,他恶魔会调用各个模块来实现各种功能。如果确定这些模块不会出现堵塞式调用,那么进程数可以和CPU核心数一样;反之,则稍少一些。
绑定Nginx worker进程到指定的CPU内核
语法:worker_cpu_affinity cpumask [cpumask…]
作用:假设每个worker都是很繁忙的,如果多个进程都在抢同一个CPU,那么就会出现同步问题。反之,如果每个worker进程独享一个CPU,就实现了完全的并发。
举例:
worker_processes 4;
worker_cpu_affinity 1000 0100 0010 0001;
SSL硬件加速
语法:ssl_engine device;
作用:如果服务器上有SSL硬件加速设备,那么就可以进行配置以加快SSL协议的处理速度。用户可以用OpenSSL提供的命令来查看是否有SSL硬件加速设备:openssl engine -t
系统调用gettimeofday的执行频率
语法:timer_resolution t;
作用:默认情况下,每次内核的事件调用(如epoll,select,poll,kqueue等)返回时,都会执行一次gettimeofday,实现内核的时钟来更新nginx的缓存时钟。在早期的linux中,这个代价不小。
Nginx worker进程优先级设置
语法:worker_priority nice;
默认:worker_priority 0;
作用:在Linux和Unix中,当许多进程都处于可执行状态时,按照优先级来决定本次内核选择哪一个进程执行。进程分配的CPU时间片大小也与优先级有关,优先级越高,时间片越长(例如,在默认情况下,最小时间片是5ms,最大则有800ms)。优先级由静态优先级和内核根据进程的执行情况所做的动态调整(目前只有+-5的调整)共同决定。nice是进程的优先级,他的取值范围是-20~+19,-20是最高优先级,+19是最低优先级。不建议把nice的值设为比内核进程(t通常为-5)还要小。