前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx 专题-I/O 多路复用

Nginx 专题-I/O 多路复用

作者头像
用户1081422
发布2020-04-08 10:08:00
7160
发布2020-04-08 10:08:00
举报
文章被收录于专栏:T客来了

章节目录

  • I/O复用
  • IO多路复用
  • 多路复用-select、epoll
  • select epoll 优缺点总结
  • linux 更改文件描述符大小的命令 - 面试会问
I/O复用

什么是I/O复用

代码语言:javascript
复制
I/O复用 解决的是并发性请求的问题。
处理多个并发请求,要产生多个I/O流来进行系统内核数据的读取。
常用的两种处理方式是串行,前一个阻塞,后面无法继续进行处理、并行处理请求-实现最大并发和吞吐。
I/O复用定义为:一个socket作为复用来完成整个I/O流的请求链接建立,处理请求则采用多线程。
IO多路复用

普通版:

代码语言:javascript
复制
老师给一个班学生出题,并且老师不停挨个询问学生有没有做完试题,如果有
学生做完试题,则解答,这种方式采用的是串行的处理方式。

强化版:

代码语言:javascript
复制
老师分身,创建多个线程老师,分别处理每个学生做完的试题,这种方式采用的是多线程的处理方式。但是资源分配上、上下文切换会出现额外资源消耗。

究极版:

代码语言:javascript
复制
真正的I/O多路复用
学生(网络请求-请求数据分组到达,)主动上报自己做题的情况,复用的是老师处理学生做题情况的线程

什么是I/O多路复用

代码语言:javascript
复制
多个描述符的I/O操作都能在一个线程内并发交替地顺序完成,这就叫I/O多路复
用,这里的“复用”指的是复用同一个线程
多路复用-select、epoll

select

代码语言:javascript
复制
I/O多路复用采用的是select 模型,即系统发出select系统调用,等待内核主动将可
用的文件描述符信息发送给应用一端,fd未准备好,应用会block住socket请
求,当fd就许后,select 会遍历维护的文件描述符发现可用的文件描述符。

epoll

代码语言:javascript
复制
每当fd就绪,系统采用回调函数将fd放入就绪列表,效率非常高。
代码语言:javascript
复制
举例:
告诉服务员,用餐结束,服务员告知老板,说有几桌要结账,老板需要询问
告诉服务员,用餐结束,服务员告知老板,说哪号桌要结账,老板不需要询问。
select epoll 优缺点总结

模型

优点

缺点

select

1.采用线性遍历的方式获取可用的fd文件描述符2.可维护文件描述符大小有限制为1024

epoll

1.每当fd就绪,系统采用回调函数将fd放入就绪列表,效率非常高。2.最大连接数没有限制

linux 更改文件描述符大小的命令 - 面试会问

当前登陆态修改方式

代码语言:javascript
复制
ulimit -n [fd数量]

永久生效、开机启动方式

代码语言:javascript
复制
1.vi /etc/security/limits.conf 
2.- nofile 4096
3.重启操作系统
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 T客来了 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 章节目录
    • I/O复用
      • IO多路复用
        • 多路复用-select、epoll
          • select epoll 优缺点总结
            • linux 更改文件描述符大小的命令 - 面试会问
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档