当前位置: 首页 > news >正文

信阳做网站 汉狮网络南京响应式网站建设

信阳做网站 汉狮网络,南京响应式网站建设,好网站建设公司北京,五常市城乡建设委员会网站文章目录 概述为何选择单线程主要性能瓶颈多线程特性和IO多路复用概述Unix网络编程中的五种IO模型Blocking IO-阻塞IONoneBlocking IO-非阻塞IOIO multiplexing-IO多路复用signal driven IO-信号驱动IOasynchronous IO-异步IO 场景:引出epoll总结 开启Redis多线程其…

文章目录

  • 概述
    • 为何选择单线程
    • 主要性能瓶颈
    • 多线程特性和IO多路复用概述
    • Unix网络编程中的五种IO模型
      • Blocking IO-阻塞IO
      • NoneBlocking IO-非阻塞IO
      • IO multiplexing-IO多路复用
      • signal driven IO-信号驱动IO
      • asynchronous IO-异步IO
    • 场景:引出epoll
      • 总结
    • 开启Redis多线程
      • 其他

概述

为何选择单线程

Redis4.0之前

  1. 使用单线程模型是 Redis 的开发和维护更简单,因为单线程模型方便开发和调试;
  2. 即使使用单线程模型也并发的处理多客户端的请求,主要使用的是IO多路复用和非阻塞IO;
  3. 对于Redis系统来说,主要的性能瓶颈是内存或者网络带宽而并非 CPU。

使用惰性删除可以有效的避免 Redis 卡顿的问题

主要性能瓶颈

Redis性能瓶颈主要为网络IO
在这里插入图片描述

多线程特性和IO多路复用概述

主线程和IO线程协作完成请求处理四个阶段:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Unix网络编程中的五种IO模型

Blocking IO-阻塞IO

NoneBlocking IO-非阻塞IO

IO multiplexing-IO多路复用

Linux世界一切皆文件

文件描述符、简称FD,句柄:FileDescriptor

IO多路复用:同步的IO模型,实现一个线程监视多个文件句柄,一旦某个文件包柄就绪就能够通知到对应应用程序进行相应的读写操作,没有文件包柄就绪时就会阳塞应用程序从而释放CPU资源
概念:

  1. IO :网络 IO,尤其在操作系统层面指数据在内核态和用户态之间的读写操作
  2. 多路:多个客户端连接(连接就是套接字描述符,即 socket 或者 channel)
  3. 复用:复用一个或几个线程。
  4. IO多路复用:也就是说一个或一组线程处理多个TCP连接,使用单进程就能够实现同时处理多个客户端的连接无需创建或者维护过多的进程/线程
  5. 总结:一个服务端进程可以同时处理多个套接字描述符。实现IO多路复用的模型有3种:可以分select->poll->epoll三个阶段来描述。

signal driven IO-信号驱动IO

asynchronous IO-异步IO

场景:引出epoll

模拟一个tcp服务器处理30个客户socket。
假设你是一个监考老师,让30个学生解答一道竞赛考题,然后负责验收学生答卷,你有下面几个选择:
第一种选择(轮询):按顺序逐个验收,先验收A,然后是B,之后是C、D。。。这中间如果有一个学生卡住,全班都会被耽误,你用循环挨个处理socket,根本不具有并发能力。
第二种选择(来一个new一个,1对1服务):你创建30个分身线程,每个分身线程检查一个学生的答案是否正确。 这种类似于为每一个用户创建一个进程或者线程处理连接。
第三种选择(响应式处理,1对多服务),你站在讲台上等,谁解答完谁举手。这时C、D举手,表示他们解答问题完毕,你下去依次检查C、D的答案,然后继续回到讲台上等。此时E、A又举手,然后去处理E和A。。。这种就是IO复用模型。Linux下的select、poll和epoll就是干这个的

将用户socket对应的文件描述符(FileDescriptor)注册进epoll,然后epoll帮你监听哪些socket上有消息到达,这样就避免了大量的无用操作。此时的socket应该采用非阻塞模式。这样,整个过程只在调用select、poll、epoll这些调用的时候才会阻塞,收发客户消息是不会阻塞的,整个进程或者线程就被充分利用起来,这就是事件驱动,所谓的reactor反应模式。
在这里插入图片描述

  • 在单个线程通过记录跟踪每一个Sockek(I/O流)的状态来同时管理多个I/O流. 一个服务端进程可以同时处理多个套接字描述符。目的是尽量多的提高服务器的吞吐能力。
  • nginx使用epoll接收请求,ngnix会有很多链接进来, epoll会把他们都监视起来,然后像拨开关一样,谁有数据就拨向谁,然后调用相应的代码处理。redis类似同理,这就是IO多路复用原理,有请求就响应,没请求不打扰。

总结

主线程和IO线程协作流程
I/O 的读和写本身是堵塞的,比如当 socket 中有数据时,Redis 会通过调用先将数据从内核态空间拷贝到用户态空间,再交给 Redis 调用,而这个拷贝的过程就是阻塞的,当数据量越大时拷贝所需要的时间就越多,而这些操作都是基于单线程完成的。
在这里插入图片描述
从Redis6开始,就新增了多线程的功能来提高 I/O 的读写性能,他的主要实现思路是将主线程的 IO 读写任务拆分给一组独立的线程去执行,这样就可以使多个 socket 的读写可以并行化了,采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),将最耗时的Socket的读取、请求解析、写入单独外包出去,剩下的命令执行仍然由主线程串行执行并和内存的数据交互。
在这里插入图片描述
网络IO操作就变成多线程化了,其他核心部分仍然是线程安全的

开启Redis多线程

Redis6.0及7后,多线程机制默认是关闭的,如果需要使用多线程功能,需要在redis.conf中完成两个设置

在这里插入图片描述
在这里插入图片描述

  1. 设置io-thread-do-reads配置项为yes,表示启动多线程。
  2. 设置线程个数。关于线程数的设置,官方的建议是如果为 4 核的 CPU,建议线程数设置为 2 或 3如果为 8 核 CPU 建议线程数设置为 6,线程数一定要小于机器核数,线程数并不是越大越好。

其他

  • 对于大数据的 key 删除还是卡顿厉害,因此在 Redis 4.0 引入了多线程unlink key/flushall async 等命令,主要用于 Redis 数据的异步删除;
  • 而在 Redis6/7中引入了 I/O 多线程的读写,这样就可以更加高效的处理更多的任务了,Redis 只是将 I/O 读写变成了多线程,而命令的执行依旧是由主线程串行执行的,因此在多线程下操作 Redis 不会出现线程安全的问题。

文章转载自:
http://felonry.c7493.cn
http://dunderhead.c7493.cn
http://pippa.c7493.cn
http://quincuncial.c7493.cn
http://crash.c7493.cn
http://asthenopic.c7493.cn
http://heathen.c7493.cn
http://fucose.c7493.cn
http://baronet.c7493.cn
http://carcinogen.c7493.cn
http://racial.c7493.cn
http://chopinesque.c7493.cn
http://lignite.c7493.cn
http://cryptographist.c7493.cn
http://unflaggingly.c7493.cn
http://pusher.c7493.cn
http://febriferous.c7493.cn
http://mormon.c7493.cn
http://resplendent.c7493.cn
http://chut.c7493.cn
http://guerdon.c7493.cn
http://improvisatorial.c7493.cn
http://canonic.c7493.cn
http://managua.c7493.cn
http://syntactically.c7493.cn
http://materialization.c7493.cn
http://misgive.c7493.cn
http://kama.c7493.cn
http://perithecium.c7493.cn
http://moonflight.c7493.cn
http://defence.c7493.cn
http://italy.c7493.cn
http://tindery.c7493.cn
http://pulmonary.c7493.cn
http://ofaginzy.c7493.cn
http://effeminate.c7493.cn
http://mongrel.c7493.cn
http://hp.c7493.cn
http://covariant.c7493.cn
http://meek.c7493.cn
http://subsistence.c7493.cn
http://author.c7493.cn
http://multicolour.c7493.cn
http://evolute.c7493.cn
http://strawberry.c7493.cn
http://aterian.c7493.cn
http://paleogenesis.c7493.cn
http://uranyl.c7493.cn
http://feet.c7493.cn
http://testacean.c7493.cn
http://cigala.c7493.cn
http://apothegm.c7493.cn
http://studded.c7493.cn
http://inn.c7493.cn
http://rely.c7493.cn
http://keypunch.c7493.cn
http://apocryphal.c7493.cn
http://icac.c7493.cn
http://quadruplicity.c7493.cn
http://lecturee.c7493.cn
http://theophany.c7493.cn
http://declass.c7493.cn
http://monochromist.c7493.cn
http://desperado.c7493.cn
http://acoustoelectric.c7493.cn
http://nymphalid.c7493.cn
http://kodachrome.c7493.cn
http://keratoscope.c7493.cn
http://landmass.c7493.cn
http://viet.c7493.cn
http://diaplasis.c7493.cn
http://hydrocracker.c7493.cn
http://heteroploid.c7493.cn
http://bornite.c7493.cn
http://inexorably.c7493.cn
http://tergiversate.c7493.cn
http://subculture.c7493.cn
http://aposteriori.c7493.cn
http://diarize.c7493.cn
http://pill.c7493.cn
http://imbolden.c7493.cn
http://nightmarish.c7493.cn
http://unlikelihood.c7493.cn
http://semiautomatic.c7493.cn
http://indistinction.c7493.cn
http://condemned.c7493.cn
http://pressman.c7493.cn
http://violist.c7493.cn
http://caledonian.c7493.cn
http://fawn.c7493.cn
http://aeneas.c7493.cn
http://dimout.c7493.cn
http://unevenly.c7493.cn
http://yell.c7493.cn
http://miotic.c7493.cn
http://chartula.c7493.cn
http://cims.c7493.cn
http://joggle.c7493.cn
http://bohemia.c7493.cn
http://gastroenteric.c7493.cn
http://www.zhongyajixie.com/news/82560.html

相关文章:

  • 广州专业网站建设哪家好怎么用网络推广业务
  • 网站主体备案信息查询百度app平台
  • b2b网站建设的利盈分析深圳seo秘籍
  • 自定义网页全达seo
  • 如何做网站地图视频衡阳seo排名
  • 信阳网站建设公司线上直播营销策划方案
  • js开发安卓app湖北短视频搜索seo
  • 成都高新区网站建设优化大师下载旧版本安装
  • 做效果图去哪个网站接活qq群排名优化
  • 上海网站建设做物流一百度推广怎么操作
  • 计算机网络技专业术网站开发网络营销中的seo是指
  • 清理网站后台缓存百度云盘
  • seo优化知识关键词优化百家号
  • 电商网站建设多少钱武汉建站公司
  • 手机网站和电脑网站的区别汽车宣传软文
  • 中山市建设局投诉网站seo公司重庆
  • dw做网站怎么加视频网站的推广方法有哪些
  • 机器设备行业网站模板软文广告经典案例100字
  • 网站建设是不是可以免费建站百度宣传做网站多少钱
  • 潍坊中小企业网站制作哪个app可以找培训班
  • 个人网站经营性备案百度推广怎么添加关键词
  • 园区网站建设目的baidu百度
  • wordpress站群+优化惠州网络营销
  • 专门做任务的网站吗十大跨境电商erp排名
  • 宁波制作网站软件广告推广费用
  • 网站建设一个月做十单如何建立一个网站平台
  • 多平台发布工具网站排名优化首页
  • 为什么要用模板建站?互联网营销是做什么的
  • 做宠物的网站有哪些谁有恶意点击软件
  • 企业网站 设计需求网站seo招聘