tomcat、netty,nginx的网络模型都是使用多路 复用 reactor模型
nginx是轻量级的,同样是web服务,比a'
在静态资源的处理中,它借助了linux底层实现了高效(内核实现异步io,0拷贝)
抗并发:niginx处理请求是异步非阻塞的(线程,多路复用,0拷贝,)
模块化的设计,增强了nginx的灵活性,可以让用户自己选择需要的模块,如下图
nginx有一个分发者,负责对事件分发
cpu密集型,worker数和cpu数一致,io密集性,是cpu的1.5-2倍
每个worker以非阻塞的方式处理多个连接,减少了上下文的次数(worker走的是reactor模式)
状态机的调用 流程控制
安装并配置需要的模块
1、工作进程数量的优化
如何查看工作进程数:
ps -ef|grep nginx
在conf配置文件中,有工作进程worker——processes的配置
io密集型,配置为核数的1.5-2倍
cpu密集型配置为相同数
linux查看服务器cpu核数:lscpu
2、cpu亲和力的优化
工作进程捆绑到cpu上(因为如果不捆绑的话,有可能出现多个进程在一个cpu上运行,而浪费了另外一个cpu的资源)
worker——cpu——affinity 01 10;二级制的写法 两核一对一配置
worker——cpu——affinity 0001 0010 0100 1000;
cpu最大打开文件数优化
nginx最大打开文件数优化
nginx报错打开文件数过多,原因是什么?
more conf中(event的配置指定了一个worker最大的连接数)
用ab压测工具进行压测
如何修改最大的文件打开数
1、配置worker_rlimit_nofile 1028
2、配置event 1024
3、配置linux的内核 more /etc/security/limints.conf
*soft nofile 打开数
- hard nofile 打开文件数
正常情况设为65535
nigix事件处理模型优化
在linux环境下指定事件驱动的模型
开启高效传输模型的优化 enginx的0拷贝(减少内存,用户态的复制,直接在内核处理)
sendfile的参数详解
tcp_nopush
连接超时时间优化
fastcgi优化*()
expires缓存优化
上面的是正则表达式,说明访问该路径下的图片,会被缓存30天
在conf下配置
内核参数优化
nginx防盗链优化
防止其他客户端调用访问我们的资源
worker_connections 1028