一、IO多路复用
什么是IO多路复用:
多个描述符的IO操作都能在一个线程内并发交替地顺序完成,这里的“复用”指的是复用同一个线程。
以前的方式串行:例如老师一个个问学生要不要上厕所
以前的方式并行:老师分身术问学生要不要上厕所
IO多路复用:学生主动上报要上厕所
IO多路复用的方式select、poll、epoll、
select的缺点:
1)能够监视文件描述符的数量存在最大限制
2)线性扫描效率低下
举个栗子:我们告诉服务员,我们要结账,服务员告诉老板有人要结账,老板要一个个去找谁要结账。
epoll模型:
1)每当FD就绪,采用系统的回调函数直接将fd放入,效率更高
2)最大连接无限制
举个栗子:我们告诉服务员,我们要结账,服务员会告诉老板哪桌结账
二、轻量级
功能模块少
代码模块化
三、CPU亲和(affinity)
把CPU核心和Nginx工作进程绑定方式,把每个worker进程固定在一个cpu上执行,减少切换cpu的
cache miss,获得更好的性能。
四、sendfile
静态文件采用linux sendfile 不经过用户空间
网友评论