优化nginx进程个数的策略
在高并发、高访问量的web服务场景,需要事先启动好更多的nginx进程,以保证快速响应并处理大量并发用户的请求。
worker_processes 1;一般调整到与CPU的颗数相同
查看LInux可查看CPU个数及总核数
grep processor /proc/cpuinfo|wc -l
优化绑定不同的nginx进程到不同的CPU上
默认情况下,nginx的进程跑在某一个CPU或CPU的某一个核上,导致nginx进程使用硬件的资源不均,本节的优化是不同的nginx进程给不同的CPU处理,充分有效的利用有效的硬件资源
四核cpu配置
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
双核配置
worker_processes 2;
worker_cpu_affinity 0101 1010;
调整nginx单个进程允许的客户端最大连接数
参数语法:worker_connections number
默认配置:worker_connections 512
放置位置:events 标签
events {
worker_connections 1024; #一个worker进程的并发
}
总并发= worker_processes* worker_connections
配置nginx worker进程最大打开文件数
参数语法:worker_rlimit_nofile number
放置位置:主标签段
说明:作用是改变worker processes能打开的最大文件数
worker_rlimit_nofile 65535;
这各参数受系统文件的最大打开数限制,解决方法:
[root@admin nginx]# cat /proc/sys/fs/file-max
8192
文件系统最大可打开文件数
配置nginx worker进程最大打开文件数
要想ulimits 的数值永久生效,必须修改配置文件/etc/security/limits.conf
在该配置文件中添加
* soft nofile 65535
* hard nofile 65535
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
* 表示所用的用户
linux最大打开文件数
修改系统总限制
其实上的修改都是对一个进程打开的文件句柄数量的限制,我们还需要设置系统的总限制才可以。
假如,我们设置进程打开的文件句柄数是1024 ,但是系统总线制才500,所以所有进程最多能打开文件句柄数量500。从这里我们可以看出只设置进程的打开文件句柄的数量是不行的。所以需要修改系统的总限制才可以。
echo 6553560 > /proc/sys/fs/file-max
修改nginx.conf
worker_rlimit_nofile 65535;
nginx事件处理模型优化
nginx的连接处理机制在于不同的操作系统会采用不同的I/O模型,Linux下,nginx使用epoll的I/O多路复用模型,在freebsd使用kqueue的IO多路复用模型,在solaris使用/dev/pool方式的IO多路复用模型,在windows使用的icop等等。
要根据系统类型不同选择不同的事务处理模型,选择有“use [ kqueue | rtsig |epool |dev/pool |select |pllo ];”我们使用的是Centos6.5的linux,因此将nginx的事件处理模型调整为epool模型。
events {
worker_connections 1024;
use epoll;
}
隐藏版本号
一般来说,软件的漏洞都和版本相关,所以我们要隐藏或消除web服务对访问用户显示的各种敏感信息。
vim /usr/local/nginx/conf/nginx.conf
在http模块下加入:
server_tokens off;
粉丝福利