专栏首页T客来了Nginx 专题-I/O 多路复用

Nginx 专题-I/O 多路复用

章节目录

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

I/O复用

什么是I/O复用

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

IO多路复用

普通版:

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

强化版:

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

究极版:

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

什么是I/O多路复用

多个描述符的I/O操作都能在一个线程内并发交替地顺序完成,这就叫I/O多路复
用,这里的“复用”指的是复用同一个线程

多路复用-select、epoll

select

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

epoll

每当fd就绪,系统采用回调函数将fd放入就绪列表,效率非常高。
举例:
告诉服务员,用餐结束,服务员告知老板,说有几桌要结账,老板需要询问
告诉服务员,用餐结束,服务员告知老板,说哪号桌要结账,老板不需要询问。

select epoll 优缺点总结

模型

优点

缺点

select

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

epoll

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

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

当前登陆态修改方式

ulimit -n [fd数量]

永久生效、开机启动方式

1.vi /etc/security/limits.conf 
2.- nofile 4096
3.重启操作系统

本文分享自微信公众号 - T客来了(ltdo11),作者:ltdo111

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 暴力解说之首次部署NGINX

    本章讲解下在项目上线部署的时候对NGINX的操作。有些童鞋在网上百度类似LNMP安装就跟着命令一条一条执行了,如果没报错还好,一旦报错就懵逼状态了。这是对自己...

    CrazyCodes
  • Nginx架构概述

    传统的进程-或用于处理并发连接的基于线程的模型涉及使用单独的进程或线程处理每个连接,并在网络或输入/输出上进行阻塞操作。根据应用,在内存和CPU消耗方面可能非常...

    用户1263954
  • nginx服务部署 说明

    第1章 常用的软件 1.1 常用来提供静态服务的软件 Apache :这是中小型Web服务的主流,Web服务器中的老大哥, Nginx :大型网站Web服务...

    惨绿少年
  • FastDFS图片服务器(分布式文件系统)学习。

    参考:https://blog.csdn.net/hiqingtian/article/details/79413471

    别先生
  • 利用GoAccess实现nginx日志可视化

    关于GoAccess的损耗,因为网络上的教程基本是基于ELK(Elasticsearch , Logstash, Kibana),有点担心GoAcces...

    文科生的python自学之路
  • Web基础配置篇(五): Nginx的配置及代理转发

    说到web服务器,你可以疑惑,前面说的tomcat不也是web服务器么,为啥要用nginx?

    品茗IT
  • ansible入门

    Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们...

    萧晚歌
  • Beats:运用 Filebeat module 分析 nginx 日志

    在之前的文章中,我介绍了如何使用 Filebeat 把一个日志文件直接写入到 Elasticsearch 中,或通过 Logstash 的方法写到Elastic...

    腾讯云大数据
  • 备战CKA每日一题~第13天 | 真题~静态Pod创建方法与注意点

    在静态pod目录下创建yaml,使用下面命令生成符合要求的myservice.yaml,等待kubelet自动拉起静态pod

    我的小碗汤
  • Jumpserver2.2部署文档

    需要配置这个数据库软链,不然后面会出现项目初始化找不到mysqlclient的问题

    alexhuiwang
  • Jumpserver2.2部署文档

    需要配置这个数据库软链,不然后面会出现项目初始化找不到mysqlclient的问题

    alexhuiwang
  • 基于TCPCopy的仿真压测方案

    tcpcopy 是一个分布式在线压力测试工具,可以将线上流量拷贝到测试机器,实时的模拟线上环境,达到在程序不上线的情况下实时承担线上流量的效果,尽早发现 bug...

    py3study
  • Lustre 文件系统安装

    如果因为网络问题,可以使用proxychains4 来进行代理访问:(proxychains4 安装教程)

    xuyaowen
  • 【TKE】容器问题排错小技巧

    有时候我们想要查看下容器内部的一些东西,但是无奈容器没有shell 执行环境,比如想看看 coredns 容器中 /etc/resolv.conf 的内容是否正...

    jokey
  • 【运维】Centos 7 一键 搭建 Java开发者环境

    虽然自己是一个开发,但是并不能止于开发的技术,项目发布需要部署到到Linux 服务器上, 所以对于开发人员来说,掌握一定的运维技能是必须的, 之前也有过帮人搭建...

    石臻臻的杂货铺[同名公众号]
  • shell学习笔记(3)

    范例三(请思考):开发脚本实现如果/server/scripts下面存在if3.sh就输出到屏幕。 注意:如果执行脚本后发现该if3.sh不存在,就自动创建这个...

    py3study
  • Shell百宝箱(后续会不断更新)

    常见_youmen
  • Docker之打包镜像 原

        我的hostA上有nginx镜像, 但是hostB上没有, 在hostB上下载镜像很慢, 这种情况下, 可以用docker的save和load来解决.

    克虏伯
  • 【云+社区年度征文】利用nginx搭建推流服务器

    博客已经许多月没有继续更新了,近期刚好有个粉丝在做直播实时流转发,需要构建推流服务器,像我提出了一些nginx构建的问题,捧着自己的粉丝请教(当时一头雾水:我只...

    包子388321

扫码关注云+社区

领取腾讯云代金券