开发者学堂课程【Linux Web服务器Nginx搭建与配置:nginx 企业应用配置-1】学习笔记,与课程紧密联系,让用户快速学习知识.
课程地址:https://developer.aliyun.com/learning/course/579/detail/7988
nginx 企业应用配置-1
目录
一.nginx配置
二.ngx_http_core_module
一、nginx配置
性能优化相关的配置:
1、 worker_processes number | auto
worker进程的数量;通常应该为当前主机的cpu的物理核心数
注:
worker进程的数量不是越多越好,一般与当前cpu的物理核心数数量一致即可,因为worker进程还涉及到上下文切换的问题,通常来说进程与进程之间是无法共享资源的。
比如一个用户数据第一次访问worker时,但下次使用时会刷新进入下一个worker,所以之前的信息就无法使用了。
但在同一个worker中,虽然是不同的用户进行访问,但是所分配的cpu一样。我们就可以使用一个worker为其提供服务。
worker_processes 决定工作进程的数量
此外,我们还可以进行cpu的绑定,将具体的一个worker和cpu绑定在一个cpu内核上去,这样的好处在于提高缓存的命中率,因为在cpu中自带就有缓存,若将worker进行绑定,那么cpu中的缓存就可以不断地提供使用。
如果不进行绑定,worker就存在不稳定性,会在不同的cpu中进行切换,使得信息失效,由此影响性能。
- worker_cpu_affinity cpumask…
worker_cpu_affinity auto [cpumask] 绑定worker与cpu可以提高缓存命中率,如果worker始终与一个cpu绑定,如此一来cup中的资源可以一直提供给worker使用,避免了worker四处跳跃导致性能受到影响。
CPU MASK: 00000001:0号CPU
00000010:1号CPU
10000000:8号CPU
绑定语法:
worker_cpu_affinity 0001 0010 0100 1000;
worker_cpu_affinity 01011010;
实例:当我们在四颗cup中只用两颗时,首先对设置进行修正,将auto改为2,于是当前的worker数变为两个:worker-processes auto变为worker-processes 2.•
一般使用ps查找工作在cup的worker
[root@contos7 nginx]#ps axo pid,cmd pid | grop nginx
36800 nginx :master process nginx 0
36801 nginx:worker process 1
36802 nginx :worker Process 2
36815 grep –color=auto nginx 0
多次行走都没有变化,此时我们可以进行触发。结果表示:
36800 nginx :master process nginx 0
36801 nginx:worker process 1
36802 nginx :worker Process 1
36815 grep –color=auto nginx 0
得出worker进程为和cpu进行绑定。
于是我们使用worker_cpu_affinity(例子 0001 0010 0100 1000)这个指令来进行绑定,affinity 为亲缘性,写法参照CPU MASK。
- worker_priority number
指定worker进程的nice值,设定worker进程优先级:[-20,20]
默认优先级由为,可以使用worker_priority number来指定优先级,以-10为例
User nginx
Worker-processes 2
Worker-cpu-affinity 0010 0010;
Worker-priorrity -10
Error-log /var/log/nginx/error.log
Pid /run/nginx.pid
绑定结果
36800 nginx :master process nginx 0 0
36801 nginx:worker process 1 -10
36802 nginx :worker Process 2 -10
36815 grep –color=auto nginx 0 0
以20为例
User nginx
Worker-processes 2
Worker-cpu-affinity 0010 0010;
Worker-priorrity 19
Error-log /var/log/nginx/error.log
Pid /run/nginx.pid
绑定结果
36800 nginx :master process nginx 0 0
36801 nginx:worker process 1 19
36802 nginx :worker Process 2 19
36815 grep –color=auto nginx 0 0
得出优先级最大值只能到19
以19为例
User nginx
Worker-processes 2
Worker-cpu-affinity 0010 0010;
Worker-priorrity 19
Error-log /var/log/nginx/error.log
Pid /run/nginx.pid
绑定结果
36800 nginx :master process nginx 0 0
36801 nginx:worker process 1 19
36802 nginx :worker Process 2 19
36815 grep –color=auto nginx 0 0
以199为例
User nginx
Worker-processes 2
Worker-cpu-affinity 0010 0010;
Worker-priorrity 199
Error-log /var/log/nginx/error.log
Pid /run/nginx.pid
绑定结果
36800 nginx :master process nginx 0 0
36801 nginx:worker process 1 19
36802 nginx :worker Process 2 19
36815 grep –color=auto nginx 0 0
此时设置数值已超过但是优先级最大还是19,语法检查不出错误
- worker_rlimit_nofile number
worker进程所能够打开的文件数量上限,如6553
没有默认值,可按情况设置
Syntax worker.rlimit_core size
Default ___
Context: main
事件驱动相关的配置
events (
…
}
1. worker connections number
每个worker进程所能够打开的最大并发连接数数量,如10240
总最大并发数:worker-processes * worker-connections
2、use method
指明并发连接请求的处理方法,默认自动选择最优方法
默认使用use epoll;优势在于epoll
3、accept mutex on I off 互斥
处理新的连接请求的方法:on指由各个worker轮流处理新请求Off指每个新请求的到达都会通知(唤醒)所有的worker进程 但只有 个进程可获得连接,造成“惊群”,影响性能。
设置范围只能在event上
Synitabc accept.mutex on Ioff
Default accept muter off,
Context events
调试和定位问题
1. daemon on off
是否以守护进程方式运行nignx,默认是守护进程方式,
Syntac daemon on I off
Default daemon on
Contest main
作用:Determines whether nginx should become a daemon. Mainly used during development
我们只能放在下面的语句块(命域语句块)中:
User nginx
Worker-processes 2
Worker-cpu-affinity 0010 0010;
Worker-priorrity -10
Error-log /var/log/nginx/error.log
Pid /run/nginx.pid
2、master_process on|off
是否以master/worker模型运行nginx;默认为on
off将不启动worker
3、 error_log file [level]
错误日志文件及其级别;出于调试需要,可设定为debug;但debug仅在编译时使用了”-with-debug”选项时才有效
方式:file /path/logfile;
stderr:发送到标准错误
syslog:server-addresslparameter=values]:发送到syslog memory:size内存 level:debuglinfo|notice|warn|error|crit|alterlemerg
http协议的相关配置
http {
… …
server {
…
server name
root
location [OPERATOR] /uri/ {
…
}
}
server {
…
}
}