1.优化nginx服务的work进程数
worker_processes 2; #一般和核数相当
根据cpu的颗数和核数;
[root@card-web03 ]# grep processor /proc/cpuinfo |wc -l
2 #<==表示1颗cpu2核
[root@card-web03 # grep 'physical id' /proc/cpuinfo |sort|uniq|wc -l
2 #<==对phycical去重计数,表示2颗cpu
2.优化绑定不同的nginx进程到不同的cpu上
默认情况下nginx的多个进程有可能跑在一个或者一核的cpu上,导致nginx进程使用硬件的资源不均,使之充分有效的利用硬件的多cpu多核资源的目的
四核配置如下:
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
八核配置:
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_cpu_affinity 0001 0010 0100 1000 0001 0010 0100 1000;
3,数据模型
events{
use epoll;
}
#异步
4.调整nginx单个进程最大连接数
worker_connections 2048; #wvent
5.单个进程允许最大文件打开数
worker_rlimit_nofile 65535; #主标签段
6. 开启高效文件传输模式
设置参数 sendfile on,防止网络磁盘I/O阻塞;
sendfile on; #copy 函数
7. 设置连接超时时间
作用:
将无用链接尽快超时,保护服务器资源
当链接很多时,及时断掉那些已经建立好的但又长时间没反应的链接,以减少其占用的服务器资源,因为服务器维护链接也是消耗资源
恶意攻击网站,就会不断和服务器建立多个链接,消耗连接数,但是啥也不干,只是持续建立链接,这就会大量消耗服务器的资源,
keepalive_timeout 120; #http server location
作用:keep-alive可以使客户端到服务器端已经建立的链接一直工作不退出,当服务器有持续请求时,keep-alive会使用正在建立的链接提供服务,从而避免服务器重新建立新链接处理请求
2. tcp_nodela
tcp_nodelay on; #开启参数
context: http , server, location #表前段
作用: 默认情况下数据发送时,内核并不会马上发送,可能会等待更多的字节组成一个数据包,这样可以提高I/O性能,但是,在每次只发送很少字节的业务场景,使用tcp_nodelay功能。等待时间会比较常
3. client_header_timerout
client_header_timeout 60s; #参数默认大小
context: http, server #可以放置的标签段
作用:
设置读取客户端请求头数据的超时时间。如果超过这个时间,客户端还没有发送完整的header数据,服务端将返回"Request time out (408)"错误,此处的知识原
4. client_body_timeout
client_body_timeout time;
context: http,server,location #放置标签段
作用: