nginx

150 阅读2分钟

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