- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线程数究竟设多少合理
⼀、需求缘起
Web-Server通常有个配置,最⼤⼯作线程数,后端服务⼀般也有个配置,⼯作线程池
的线程数量,这个线程数的配置不同的业务架构师有不同的经验值,有 业务设置为
CPU核数的2倍,有 业务设置为CPU核数的8倍,有 业务设置为CPU核数的32倍。
“⼯作线程数”的设置依据是什么,到底设置为多少能够最⼤化CPU性能,是本⽂要讨
论的问题。
⼆、⼀些共性认知
在进⾏进⼀步深⼊讨论之前,先以提问的⽅式就⼀ 共性认知达成⼀致。
提问:⼯作线程数是 是设置的越⼤越好?
回答:肯定不是的
1)⼀来服务器CPU核数有限,同时并发的线程数是有限的,1核CPU设置10000个⼯
作线程没有意义
2 )线程切换是有开销的,如果线程切换过于频繁,反⽽会使性能降低
提问:调⽤sleep()函数的时候,线程是否⼀直占⽤CPU?
回答:不占⽤,等待时会把CPU让出来,给其他需要CPU资源的线程使⽤
不⽌调⽤sleep()函数,在进⾏⼀ 阻塞调⽤,例如⽹络编程中的阻塞accept() 【等待客
户端连接】和阻塞recv() 【等待下游回包】也不占⽤CPU资源
提问:如果CPU是单核,设置多线程有意义么,能提⾼并发性能么?
回答:即使是单核,使⽤多线程也是有意义的
1)多线程编码可以让我们的服务/代码更加清晰,有 IO线程收发包,有 Worker线
程进⾏任务处理,有 T meout线程进⾏超时检测
2 )如果有⼀个任务⼀直占⽤CPU资源在进⾏计算,那么此时增加线程并不能增加并
发,例如这样的⼀个代码
wh le(1){ ++; }
该代码⼀直不停的占⽤CPU资源进⾏计算,会使CPU 占⽤率达到100%
3 )通常来说,Worker线程⼀般不会⼀直占⽤CPU进⾏计算,此时即使CPU是单核,
增加Worker线程也能够提⾼并发,因为这个线程在休息的时候,其他的线程可以继续
⼯作
三、常见服务线程模型
了解常见的服务线程模型,有助于理解服务并发的原理,⼀般来说互联⽹常见的服务
线程模型有如下两种
IO线程与⼯作线程通过队列解耦类模型
如上图,⼤部分Web-Server与服务框架都是使⽤这样的⼀种“IO线程与Worker线程通
过队列解耦”类线程模型:
1)有少数⼏个IO线程监听上游发过来的请求,并进⾏收发包 (⽣产者)
2 )有⼀个或者多个任务队列,作为IO线程与Worker线程异步解耦的数据传输通道
(临界资源)
3 )有多个⼯作线程执⾏正真的任务 (消费者)
这个线程模型应⽤很⼴,符合⼤部分场景,这个线程模型的特点是,⼯作线程内部是
同步阻塞执⾏任务的 (回想⼀下tomcat线程中是怎么执⾏Java程序的,dubbo⼯作线程
中是怎么执⾏任务的),因此可以通过增加Worker线程数来增加并发能⼒,今天要讨
论的重点是“该模型Worker线程数设置为多少能达到最⼤的并发” 。
纯异步线程模型
任何地⽅都没有阻塞,这种线程模型只需要设置很少的线程数就能够做到很⾼的吞吐
量,L ghttpd有⼀种单进程单线程模式,并发处理能⼒很强,就是使⽤的的这种模
型。该模型的缺点是:
1)如果使⽤单线程模式,难以利⽤多CPU多核的优势
2 )程序员更习惯写同步代码,callback 的⽅式对代码的可读性有冲击,对程序员的要
求也更⾼
3 )框架更复杂,往往需要server端收发组件,server端队列,cl ent端收发组件,cl ent
端队列,上下⽂管理组件,有限状态机组件,超时管理组件的⽀持
however ,这个模型不是今天讨论的重点。
四、⼯作线程的⼯作模式
了解⼯作线程的⼯作模式,对量化分析线程数的设置⾮常有帮助:
上图是⼀个典型的⼯作线程的处理过程,从开始处理start到结束处理end ,该任务的处
理共有7个步骤:
1)从⼯作队列⾥拿出任务,进⾏⼀ 本地初始化计算,例如http协议分析、参数解
析、参数校验等
2 )访问cache拿⼀ 数据
3 )拿到cache⾥的数据后,再进⾏⼀ 本地计算,这 计算和业务逻辑相关
4 )通过RPC调⽤下游service再拿⼀ 数据,或者让下游serv ce去处理⼀ 相关的任务
5 )RPC调⽤结束后,再进⾏⼀ 本地计算,怎么计算和业务逻辑相关
6 )访问DB进⾏⼀ 数据操作
7 )操作完数据库之后做⼀ 收尾⼯作,同样这 收尾⼯作也是本地计算,和业务逻
辑相关
分析整个处理的时间轴,会发现:
1)其中1,3 ,5 ,7步骤中 【上图中粉⾊时间轴】,线程进⾏本地业务逻辑计算时需
要占
您可能关注的文档
- CRC位域单表查表与建表方法.doc
- 第十一章 全国登山滑雪赛竞赛规则.doc
- 动物克隆总结(修改)介绍.doc
- 第二章 电子邮件使用技巧集锦.doc
- 十年经验-谈电脑店如何经营和发展.doc
- 网页制作和设计习题.docx
- 详解hadoop核心架构详解.docx
- 系统集成项目管理工程师 知识点记录 上午选择题题 模拟考试卷二讲述.doc
- 第四章 ABB机器人.doc
- 线性代数教学大纲详解.doc
- 特种作业煤矿安全作业试题预测试卷含答案详解【典型题】.docx
- 特种作业煤矿安全作业通关考试题库完整版附答案详解.docx
- 特种作业煤矿安全作业综合提升测试卷及答案详解【必刷】.docx
- 特种作业煤矿安全作业考前冲刺练习题(综合卷)附答案详解.docx
- 特种作业煤矿安全作业试卷(精练)附答案详解.docx
- 特种作业煤矿安全作业考前冲刺练习题及参考答案详解AB卷.docx
- 特种作业煤矿安全作业测试卷含完整答案详解【历年真题】.docx
- 2025特种作业煤矿安全作业预测复习有完整答案详解.docx
- 2025特种作业煤矿安全作业通关考试题库及参考答案详解【达标题】.docx
- 特种作业煤矿安全作业常考点试卷附参考答案详解(精练).docx
最近下载
- 配电箱采购合同协议书范本详细(2025年).docx VIP
- 部编版语文写字表六年级上册字帖.pdf VIP
- (高清版)B/T 24421.1-2023 服务业组织标准化工作指南 第1部分:总则.pdf VIP
- 2022年洛阳理工学院教师招聘笔试试题及答案解析.docx VIP
- 城市停车设施规划导则.docx VIP
- 天然气发电厂-燃气-蒸汽联合循环发电机组PPT课件.pptx VIP
- 《《中文核心期刊目录(2017年版)》》.doc VIP
- 基孔肯雅热防控技术指南(2025年版)测试题及参考答案.docx VIP
- 工程测量技术 电子水准仪 电子水准仪.ppt VIP
- 党支部贯彻落实八项规定扎实推进作风建设工作专题党课ppt课件.pptx VIP
文档评论(0)