Nginx性能优化
Posted arun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx性能优化相关的知识,希望对你有一定的参考价值。
一、性能优化相关配置:
(1)设置进程cpu的个数。
worker_process #;worker进程的个数;通常应该略少于CPU物理核心数。
(2)绑定物理cpu。
worker_cpu_affinity 00000001 00000010 00000100
(3)减少计时器解析度的值<间隔>。
timer_resolution 间隔;可减少gettimeofday()系统调用的次数;
(4)调低worker线程的nice值,提高优先级。
worker_priority -10; 指明worker进程的nice值;
二、以上详解
(1)性能优化相关配置:
1、worker_process #; worker进程的个数;通常应该略少于CPU物理核心数。
2、worker_cpu_affinity cpumask 。。。;
优点: 提升CPU缓存的命中率;
context switch:会产生CPU的不必要的消耗;cpu进程切换(浪费cpu资源和时间)
CPU隔离(worker线程绑定单个cpu,)
cpumask: 0000 0011(表示第一和第二两颗)
0000 0001
0000 0010
0000 0100
绑定三颗cpu=> worker_cpu_affinity 00000001 00000010 00000100
3、timer_resolution 间隔; 减低时间解析度,减少系统调用.生产力强的应该大量运行在用户空间,
计时器解析度:降低此值,可减少gettimeofday()系统调用的次数;
4、worker_priority number;
指明worker进程的nice值;
-20,19
100,139
(2)事件相关的配置:
1、accept_mutex {off|on};
master调度用户请求至各worker进程时使用的负载均衡锁;on表示能让多个worker轮流地、序列化地去响应新请求;
2、lock_file file;
accept_mutex用到的锁文件路径;
3、use [epoll|rtsig(实时信号)|select|poll]
指明使用的事件模型;建议让nginx自行选择;
4、worker_connections #;
设定单个worker进程所能处理的最大并发连接数量;
worker_connects * work_processes 1024 * 8
(3)用于调试、定位问题的:
1、daemon {on|off} 是否以守护进程方式运行Nginx;调试时应该设置为off。
2、master_process {on|off};
是否以master/worker模型来运行Nginx;调试时可以设置为off;
3、error_log 位置 级别;
若要使用debug级别,需要在编辑Nginx时使用 --with-debug选项;
总结:常需要进行调整的参数
worker_process,worker_connections,worker_cpu_affinity,worker_priority
以上是关于Nginx性能优化的主要内容,如果未能解决你的问题,请参考以下文章