主配置段的指令的类别:
用于调试、定位问题
正常运行必备的配置
优化性能的配置
事件相关的配置
-
正常运行的必备配置:
1、user USERNAME [GROUPNAME];
指定运行worker进程的用户 和组,例如:
user nginx nginx;
2、pid /path/to/pid_file;
指定nginx的pid文件;
pid /var/run/nginx/nginx.pid;
3、worker_rlimit_nofile #;
指定所有worker进程所能够打开的最大文件句柄数;每个用户默认能打开的最大的文件数量1024个,一个链接维持一个套接字文件。
worker_rlimit_nofile
4、worker_rlimit_sigpending #;
指定每个用户能够发往worker的信号的数量;
5、worker_rlimit_core size;
指定所有的 work 进程能够打开的核心文件大小一般来说这个参数不常使用。
-
优化性能相关的配置:
1、worker_processes #:
worker线程的个数;通常应该为物理CPU核心个数减1;tnginx可以自动判断。
2、worker_cpu_affinity cpumask …; tnginx可以支持auto。
Context switch :会产生不必要的消耗;然后绑定worker进程至指定的CPU上;
优点:提升cpu缓存命中率。
极限优化cpu隔离,不接受内核调度,而把所有内核全部指定在某一颗cpu上运行。必须剥离cpu中断处理剥离出去。
CPUMASK
0001
0010
0100
1000
例如:
worker_cpu_affinity 00000001 00000010 00000100;
For example,
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
3、timer_resolution t;计时器解析度,降低此值减少gettimeofday()系统调用;
由于发起系统调用后会发生中断,当一个服务器并发访问量会很大,每个访问都会记录日志,每个日志都会记录时间,降低这个值会减少系统调用发起次数,从而提高系统的性能。
Example:
timer_resolution 100ms;
4、worker_priority number;指明进程优先级
默认用户进程nice值为0,然后优先级为120,优先级越低,系统运行时间就会越多。
Example:
worker_priority -10; ——->110
-20, 19 ———-> 100,139
-
事件相关的配置:
1、accept_mutex [on|off]
master内部调用用户 请求至各worker时用的负载均衡锁;打开时表示能让多个worker轮流地、序列化地与响应新请求;否则为随机响应
2、lock_file /path/to/lock_file;
指明acpcept_mutex用到的锁文件路径
3、accept_mutex_delay #ms;
如果accept_mutex打开后轮着来响应不能抢,这时有可能work会忙不过来,等待多长时间重新接受请求,有可能是让下一个worker去相应。
4、use [epoll|rgsig|select|poll];
定义使用的事件模型;建议让Nginx自动选择;
5、worker_connections #;
每个worker进程所能够响应的最大并发请求数;还要取决于worker_processes
worker_connections * worker_processes
-
用于调试、定位问题:–with-debug
1、daemon [off|on]
是否以守护进程方式启动nginx;
2、debug_points、debug_connection
编译安装必须加上–with-debug才能启用,一般不是特别奇怪的问题不建议打开
3、master_process on|off;
是否以master/worker模型来运行nginx;
4、error_log /path/to/error_log level;
错误日志文件及其级别;出于调试的目的,可以使用debug级别,但此级别只有在编译nginx时使用了–with-debug选项才有效;
error_log 位置 级别
Example syslog configuration:
error_log syslog:server=192.168.1.1 debug;
-
常需要调整参数:
worker_processes, worker_connections, work_cpu_affinity, worker_priority
-
生效配置:
-s signal : send signal to a master process: stop, quit, reopen, reload
# /usr/local/nginx/sbin/nginx -s reload
七、亲自完成测试正常的配置文件。
# vim /etc/nginx/nginx.conf
user nginx nginx;
pid /var/run/nginx/nginx.pid;
worker_rlimit_core 1G;
worker_rlimit_nofile 40000;
worker_processes 3;
worker_cpu_affinity 0001 0010 0100;
timer_resolution 1000ms;
worker_priority -10;
events {
accept_mutex on;
worker_connections 1024;
accept_mutex_delay 500ms;
use epoll;
}
lock_file /var/lock/nginx.lock;
daemon on;
error_log /var/log/nginx/error.log error;
master_process on;