国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

工作線程數(shù)究竟要設(shè)置為多少

開發(fā) 開發(fā)工具
“工作線程數(shù)”的設(shè)置依據(jù)是什么,到底設(shè)置為多少能夠最大化CPU性能,是本文要討論的問題。

一、需求緣起

Web-Server通常有個(gè)配置,***工作線程數(shù),后端服務(wù)一般也有個(gè)配置,工作線程池的線程數(shù)量,這個(gè)線程數(shù)的配置不同的業(yè)務(wù)架構(gòu)師有不同的經(jīng)驗(yàn)值,有些業(yè)務(wù)設(shè)置為CPU核數(shù)的2倍,有些業(yè)務(wù)設(shè)置為CPU核數(shù)的8倍,有些業(yè)務(wù)設(shè)置為CPU核數(shù)的32倍。

“工作線程數(shù)”的設(shè)置依據(jù)是什么,到底設(shè)置為多少能夠***化CPU性能,是本文要討論的問題。

二、共性認(rèn)知

在進(jìn)行進(jìn)一步深入討論之前,先以提問的方式就一些共性認(rèn)知達(dá)成一致。

問:工作線程數(shù)是不是設(shè)置的越大越好?

答:肯定不是的

  • 服務(wù)器CPU核數(shù)有限,能夠同時(shí)并發(fā)的線程數(shù)有限,單核CPU設(shè)置10000個(gè)工作線程沒有意義
  • 線程切換是有開銷的,如果線程切換過于頻繁,反而會(huì)使性能降低

問:調(diào)用sleep()函數(shù)的時(shí)候,線程是否一直占用CPU?

答:不占用,等待時(shí)會(huì)把CPU讓出來,給其他需要CPU資源的線程使用。

不止sleep()函數(shù),在進(jìn)行一些阻塞調(diào)用時(shí),例如網(wǎng)絡(luò)編程中的:

  • 阻塞accept(),等待客戶端連接
  • 阻塞recv(),等待下游回包

都不占用CPU資源。

問:?jiǎn)魏薈PU,設(shè)置多線程有意義么,是否能提高并發(fā)性能?

答:即使是單核,使用多線程也是有意義的,大多數(shù)情況也能提高并發(fā)

  • 多線程編碼可以讓代碼更加清晰,例如:IO線程收發(fā)包,Worker線程進(jìn)行任務(wù)處理,Timeout線程進(jìn)行超時(shí)檢測(cè)
  • 如果有一個(gè)任務(wù)一直占用CPU資源在進(jìn)行計(jì)算,此時(shí)增加線程并不能增加并發(fā),例如以下代碼會(huì)一直占用CPU,并使得CPU占用率達(dá)到100%:
    1. while(1){ i++; } 
  • 通常來說,Worker線程一般不會(huì)一直占用CPU進(jìn)行計(jì)算,此時(shí)即使CPU是單核,增加Worker線程也能夠提高并發(fā),因?yàn)檫@個(gè)線程在休息的時(shí)候,其他的線程可以繼續(xù)工作

三、常見服務(wù)線程模型

了解常見的服務(wù)線程模型,有助于理解服務(wù)并發(fā)的原理,一般來說互聯(lián)網(wǎng)常見的服務(wù)線程模型有兩種:

  • IO線程與工作現(xiàn)場(chǎng)通過任務(wù)隊(duì)列解耦
  • 純異步

IO線程與工作線程通過隊(duì)列解耦類模型

IO線程與工作線程通過隊(duì)列解耦類模型

如上圖,大部分Web-Server與服務(wù)框架都是使用這樣的一種“IO線程與Worker線程通過隊(duì)列解耦”類線程模型:

  • 有少數(shù)幾個(gè)IO線程監(jiān)聽上游發(fā)過來的請(qǐng)求,并進(jìn)行收發(fā)包(生產(chǎn)者)
  • 有一個(gè)或者多個(gè)任務(wù)隊(duì)列,作為IO線程與Worker線程異步解耦的數(shù)據(jù)傳輸通道(臨界資源)
  • 有多個(gè)工作線程執(zhí)行正真的任務(wù)(消費(fèi)者)

這個(gè)線程模型應(yīng)用很廣,符合大部分場(chǎng)景,這個(gè)線程模型的特點(diǎn)是,工作線程內(nèi)部是同步阻塞執(zhí)行任務(wù)的(回想一下tomcat線程中是怎么執(zhí)行Java程序的,dubbo工作線程中是怎么執(zhí)行任務(wù)的),因此可以通過增加Worker線程數(shù)來增加并發(fā)能力,今天要討論的重點(diǎn)是“該模型Worker線程數(shù)設(shè)置為多少能達(dá)到***的并發(fā)”。

純異步線程模型

沒有阻塞,這種線程模型只需要設(shè)置很少的線程數(shù)就能夠做到很高的吞吐量,該模型的缺點(diǎn)是:

  • 如果使用單線程模式,難以利用多CPU多核的優(yōu)勢(shì)
  • 程序員更習(xí)慣寫同步代碼,callback的方式對(duì)代碼的可讀性有沖擊,對(duì)程序員的要求也更高
  • 框架更復(fù)雜,往往需要server端收發(fā)組件,server端隊(duì)列,client端收發(fā)組件,client端隊(duì)列,上下文管理組件,有限狀態(tài)機(jī)組件,超時(shí)管理組件的支持

四、工作線程的工作模式

了解工作線程的工作模式,對(duì)量化分析線程數(shù)的設(shè)置非常有幫助:

典型的工作線程的處理過程

上圖是一個(gè)典型的工作線程的處理過程,從開始處理start到結(jié)束處理end,該任務(wù)的處理共有7個(gè)步驟:

  • 從工作隊(duì)列里拿出任務(wù),進(jìn)行一些本地初始化計(jì)算,例如http協(xié)議分析、參數(shù)解析、參數(shù)校驗(yàn)等
  • 訪問cache拿一些數(shù)據(jù)
  • 拿到cache里的數(shù)據(jù)后,再進(jìn)行一些本地計(jì)算,這些計(jì)算和業(yè)務(wù)邏輯相關(guān)
  • 通過RPC調(diào)用下游service再拿一些數(shù)據(jù),或者讓下游service去處理一些相關(guān)的任務(wù)
  • RPC調(diào)用結(jié)束后,再進(jìn)行一些本地計(jì)算,怎么計(jì)算和業(yè)務(wù)邏輯相關(guān)
  • 訪問DB進(jìn)行一些數(shù)據(jù)操作
  • 操作完數(shù)據(jù)庫之后做一些收尾工作,同樣這些收尾工作也是本地計(jì)算,和業(yè)務(wù)邏輯相關(guān)

分析整個(gè)處理的時(shí)間軸,會(huì)發(fā)現(xiàn):

(1) 其中1,3,5,7步驟中(上圖中粉色時(shí)間軸),線程進(jìn)行本地業(yè)務(wù)邏輯計(jì)算時(shí)需要占用CPU

(2) 而2,4,6步驟中(上圖中橙色時(shí)間軸),訪問cache、service、DB過程中線程處于一個(gè)等待結(jié)果的狀態(tài),不需要占用CPU,進(jìn)一步的分解,這個(gè)“等待結(jié)果”的時(shí)間共分為三部分:

  • 請(qǐng)求在網(wǎng)絡(luò)上傳輸?shù)较掠蔚腸ache、service、DB
  • 下游cache、service、DB進(jìn)行任務(wù)處理
  • cache、service、DB將報(bào)文在網(wǎng)絡(luò)上傳回工作線程

五、量化分析并合理設(shè)置工作線程數(shù)

***一起來回答工作線程數(shù)設(shè)置為多少合理的問題。

通過上面的分析,Worker線程在執(zhí)行的過程中,有一部計(jì)算時(shí)間需要占用CPU,另一部分等待時(shí)間不需要占用CPU,通過量化分析,例如打日志進(jìn)行統(tǒng)計(jì),可以統(tǒng)計(jì)出整個(gè)Worker線程執(zhí)行過程中這兩部分時(shí)間的比例,例如:

  • 執(zhí)行計(jì)算,占用CPU的時(shí)間(粉色時(shí)間軸)是100ms
  • 等待時(shí)間,不占用CPU的時(shí)間(橙色時(shí)間軸)也是100ms

得到的結(jié)果是,這個(gè)線程計(jì)算和等待的時(shí)間是1:1,即有50%的時(shí)間在計(jì)算(占用CPU),50%的時(shí)間在等待(不占用CPU):

  • 假設(shè)此時(shí)是單核,則設(shè)置為2個(gè)工作線程就可以把CPU充分利用起來,讓CPU跑到100%
  • 假設(shè)此時(shí)是N核,則設(shè)置為2N個(gè)工作現(xiàn)場(chǎng)就可以把CPU充分利用起來,讓CPU跑到N*100%

結(jié)論:

N核服務(wù)器,通過執(zhí)行業(yè)務(wù)的單線程分析出本地計(jì)算時(shí)間為x,等待時(shí)間為y,則工作線程數(shù)(線程池線程數(shù))設(shè)置為 N*(x+y)/x,能讓CPU的利用率***化。

經(jīng)驗(yàn):

一般來說,非CPU密集型的業(yè)務(wù)(加解密、壓縮解壓縮、搜索排序等業(yè)務(wù)是CPU密集型的業(yè)務(wù)),瓶頸都在后端數(shù)據(jù)庫訪問或者RPC調(diào)用,本地CPU計(jì)算的時(shí)間很少,所以設(shè)置幾十或者幾百個(gè)工作線程是能夠提升吞吐量的。

六、總結(jié)

  • 線程數(shù)不是越多越好
  • sleep()不占用CPU
  • 單核設(shè)置多線程不但能使得代碼清晰,還能提高吞吐量
  • 站點(diǎn)和服務(wù)最常用的線程模型是“IO線程與工作現(xiàn)場(chǎng)通過任務(wù)隊(duì)列解耦”,此時(shí)設(shè)置多工作線程可以提升吞吐量
  • N核服務(wù)器,通過日志分析出任務(wù)執(zhí)行過程中,本地計(jì)算時(shí)間為x,等待時(shí)間為y,則工作線程數(shù)(線程池線程數(shù))設(shè)置為 N*(x+y)/x,能讓CPU的利用率***化

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2012-02-10 09:08:57

運(yùn)維2012宕機(jī)

2025-08-28 08:02:00

2021-10-18 11:55:10

SMTCPU線程

2018-01-24 07:58:47

框架組件技術(shù)棧開源

2020-11-17 09:17:58

框架組件基礎(chǔ)服務(wù)

2010-04-14 12:46:30

VaaSVMforce

2010-06-11 09:34:04

Linux操作系統(tǒng)HP

2017-06-22 10:57:29

印度人學(xué)習(xí)適度包裝

2024-09-30 05:38:48

2015-07-15 10:25:44

SDN物理交換機(jī)

2025-06-27 10:25:43

2021-10-22 08:22:37

線程Smt內(nèi)核

2020-06-16 11:00:40

線程Java代碼

2019-10-23 20:19:26

Python 開發(fā)編程語言

2011-08-25 12:51:02

2021-11-24 22:39:03

手機(jī)系統(tǒng)功能

2020-03-23 07:30:57

數(shù)據(jù)庫運(yùn)維架構(gòu)

2018-04-24 15:19:52

聚類分析數(shù)據(jù)方法

2009-10-26 09:26:42

Windows7多核評(píng)Windows 7多核

2019-06-04 14:15:08

JavaScript V8前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲欧洲高清| 粉嫩av一区二区三区| 上原亚衣av一区二区三区| www.亚洲.com| 亚洲国产一区二区在线播放| 国产成人a亚洲精v品无码| 国内精品自线一区二区三区视频| 国模精品娜娜一二三区| 精品一区二区三区的国产在线观看| 色噜噜国产精品视频一区二区| 91九色在线播放| 欧美一区二区人人喊爽| 黄色av网站在线看| 欧美性精品220| 麻豆电影在线观看| 亚洲高清免费观看 | 国产一区调教| 欧美巨猛xxxx猛交黑人97人| 丁香婷婷久久| 亚洲深夜福利在线| 欧美极品影院| 一区二区在线视频播放| 日韩欧美一级二级| 精品无码一区二区三区爱欲| 婷婷综合社区| 欧美激情国产精品| 蜜臀精品一区二区三区在线观看| 国产精品老女人视频| 欧美亚洲国产一区| 国产欧美一区二区三区四区 | 天天综合五月天| 超碰97免费观看| 三级精品视频| 国产亚洲精品一区二区| 手机亚洲第一页| 不卡视频在线观看| 精品国产第一页| 国产精品久久观看| 97操在线视频| 51午夜精品| 亚洲美女91| 日韩尤物视频| 成人av在线电影| 亚洲精品国产精品国自产在线| 欧美一区二区三区在线免费观看 | 精东影业在线观看| 99精品在线观看视频| 男女爽爽爽视频| 久久综合色占| 在线看无码的免费网站| 国产一区二区在线观看免费| 高清hd写真福利在线播放| 欧美色手机在线观看| 欧美三级一区| 欧美日韩精品免费看| 久久九九久精品国产免费直播| 精品欧美不卡一区二区在线观看 | 草美女在线观看| 欧美制服第一页| 寂寞少妇一区二区三区| 免费在线稳定资源站| 午夜精品一区二区三区在线视频 | 精品亚洲第一| 黄色精品一区二区| 久久日本片精品aaaaa国产| 91午夜理伦私人影院| 成人福利视频在线| 免费av不卡| 91视频国产高清| 一区二区免费视频| 国产精品1区在线| 成人网站免费观看入口| 日韩成人av在线| 丝袜美腿成人在线| 国产污视频在线| 亚洲精品欧美一区二区三区| 国产亚洲成年网址在线观看| 中中文字幕av在线| 国产精品色在线观看| 日韩欧美另类一区二区| 成人手机视频在线| 日韩精品免费在线观看| 日本亚洲天堂网| 大桥未久在线视频| 中文字幕在线观看一区二区三区| 欧美mv和日韩mv国产网站| 91香蕉视频mp4| 日本新janpanese乱熟| 正在播放国产一区| 国产91精品在线观看| 久久91视频| 诱受h嗯啊巨肉高潮| 91麻豆国产精品| 亚洲精品乱码久久久久| 亚洲一区二区日韩| 青草影视电视剧免费播放在线观看| 麻豆91蜜桃| 中文字幕欧美日韩va免费视频| 91免费在线视频观看| 免费欧美激情| 麻豆视频在线观看免费| 亚洲综合激情五月| 日韩av色综合| 亚洲国产精品大全| 亚洲欧美国产毛片在线| 精品av久久久久电影| 亚洲午夜国产成人| 精品推荐蜜桃传媒| 熟女少妇精品一区二区| 久久国产精品高清| 久久人91精品久久久久久不卡| 激情av一区二区| 91麻豆成人久久精品二区三区| 国产精品不卡| 日韩中文字幕一区二区高清99| 日本视频在线| 在线观看国产视频一二三| 午夜久久久久久久久久久| 999精品在线观看| 韩国19禁主播vip福利视频| 亚洲成**性毛茸茸| 欧美无砖专区一中文字| 国产精品欧美一区喷水| 国产一区二区三区不卡在线观看| 成人激情免费视频| 国产精品美女在线观看直播| 国产精品视频一区二区图片 | 国产精品综合视频| 午夜一区不卡| 欧美在线影院| 欧美日韩国产在线观看网站| 日韩免费一级| 中文字幕成人| 欧美天堂一区二区| 日韩欧美一区二区三区在线观看| 好看的中文字幕在线播放 | 亚洲欧美中日韩| 韩国女主播一区二区三区| 成人美女大片| 免费毛片在线看片免费丝瓜视频| 久久久久久久久久国产精品| 欧美丰满少妇xxxbbb| 一区二区三区在线观看欧美| 国产色综合久久| 久久久久久综合| 国产精品美女一区二区| 国产精品蜜臀在线观看| 中文字幕一区二区三区不卡| 国产欧美日韩综合| 1024成人网色www| 亚洲欧美色图小说| 亚洲18女电影在线观看| 欧美中文字幕亚洲一区二区va在线| 欧洲精品一区二区| 91麻豆免费在线视频| 国产一区二区三区四区五区在线 | 91精品国产乱| 欧美一级日韩一级| 日韩中文字幕网址| 茄子视频成人在线| 狠狠色噜噜狠狠色综合久 | 久久精品亚洲一区二区| 91免费看片在线观看| 一卡二卡欧美日韩| 亚洲成人久久电影| 亚洲网站啪啪| 精品毛片乱码1区2区3区| 亚洲久久久久久久久久| 2024亚洲男人天堂| 日本一区二区三区精品视频| 日本阿v视频在线观看| 欧洲毛片在线| 国产国产一区| 免费一区视频| 极品美女一区二区三区| 亚洲丁香日韩| 精品无码三级在线观看视频| 久久蜜桃精品| 激情五月宗合网| 粗暴91大变态调教| 久久久久久久久免费视频| 亚洲热av色在线播放| 国产欧美午夜| 国产精品看片你懂得| 精品裸体舞一区二区三区| 欧美中文在线字幕| 亚洲第一综合网站| 青青草在线视频免费观看| 91精品国产自产观看在线| 久久一日本道色综合久久| 亚洲自拍偷拍综合| 欧美极度另类性三渗透| 欧美日韩中文字幕在线播放| 女人偷人在线视频| 成人av资源在线播放| 日日碰狠狠躁久久躁婷婷| 怡红院成人在线| 粉嫩av一区二区三区在线播放| 精品国偷自产国产一区| 久久久99爱|