成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Java線程數究竟設多少合理

瀏覽:3日期:2022-08-13 18:55:02
需求緣起

Web-Server通常有個配置,最大工作線程數,后端服務一般也有個配置,工作線程池的線程數量,這個線程數的配置不同的業務架構師有不同的經驗值,有些業務設置為CPU核數的2倍,有些業務設置為CPU核數的8倍,有些業務設置為CPU核數的32倍。

“工作線程數”的設置依據是什么,到底設置為多少能夠最大化CPU性能,是本文要討論的問題。

一些共性認知

在進行進一步深入討論之前,先以提問的方式就一些共性認知達成一致。

1、提問:工作線程數是不是設置的越大越好?

回答:肯定不是的。

一來服務器CPU核數有限,同時并發的線程數是有限的,1核CPU設置10000個工作線程沒有意義。 線程切換是有開銷的,如果線程切換過于頻繁,反而會使性能降低。

2、提問:調用sleep()函數的時候,線程是否一直占用CPU?

回答:不占用,等待時會把CPU讓出來,給其他需要CPU資源的線程使用。

不止調用sleep()函數,在進行一些阻塞調用,例如網絡編程中的阻塞accept()【等待客戶端連接】和阻塞recv()【等待下游回包】也不占用CPU資源。

3、提問:如果CPU是單核,設置多線程有意義么,能提高并發性能么?

回答:即使是單核,使用多線程也是有意義的。

多線程編碼可以讓我們的服務/代碼更加清晰,有些IO線程收發包,有些Worker線程進行任務處理,有些Timeout線程進行超時檢測。

如果有一個任務一直占用CPU資源在進行計算,那么此時增加線程并不能增加并發,例如這樣的一個代碼:

while(1){ i++; }

該代碼一直不停的占用CPU資源進行計算,會使CPU占用率達到100%。

通常來說,Worker線程一般不會一直占用CPU進行計算,此時即使CPU是單核,增加Worker線程也能夠提高并發,因為這個線程在休息的時候,其他的線程可以繼續工作。

常見服務線程模型

了解常見的服務線程模型,有助于理解服務并發的原理,一般來說互聯網常見的服務線程模型有如下兩種:

1. IO線程與工作線程通過隊列解耦類模型

Java線程數究竟設多少合理

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

有少數幾個IO線程監聽上游發過來的請求,并進行收發包(生產者) 有一個或者多個任務隊列,作為IO線程與Worker線程異步解耦的數據傳輸通道(臨界資源) 有多個工作線程執行正真的任務(消費者)

這個線程模型應用很廣,符合大部分場景,這個線程模型的特點是,工作線程內部是同步阻塞執行任務的(回想一下tomcat線程中是怎么執行Java程序的,dubbo工作線程中是怎么執行任務的),因此可以通過增加Worker線程數來增加并發能力,今天要討論的重點是:“該模型Worker線程數設置為多少能達到最大的并發”。

2. 純異步線程模型

任何地方都沒有阻塞,這種線程模型只需要設置很少的線程數就能夠做到很高的吞吐量,Lighttpd有一種單進程單線程模式,并發處理能力很強,就是使用的的這種模型。該模型的缺點是:

如果使用單線程模式,難以利用多CPU多核的優勢 程序員更習慣寫同步代碼,callback的方式對代碼的可讀性有沖擊,對程序員的要求也更高 框架更復雜,往往需要server端收發組件,server端隊列,client端收發組件,client端隊列,上下文管理組件,有限狀態機組件,超時管理組件的支持

however,這個模型不是今天討論的重點。

工作線程的工作模式

了解工作線程的工作模式,對量化分析線程數的設置非常有幫助:

Java線程數究竟設多少合理

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

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

分析整個處理的時間軸,會發現:

1)其中1,3,5,7步驟中【上圖中粉色時間軸】,線程進行本地業務邏輯計算時需要占用CPU。2)而2,4,6步驟中【上圖中橙色時間軸】,訪問cache、service、DB過程中線程處于一個等待結果的狀態,不需要占用CPU。

進一步的分解,這個“等待結果”的時間共分為三部分:

請求在網絡上傳輸到下游的cache、service、DB。 下游cache、service、DB進行任務處理。 cache、service、DB將報文在網絡上傳回工作線程。量化分析并合理設置工作線程數

最后一起來回答工作線程數設置為多少合理的問題。

通過上面的分析,Worker線程在執行的過程中,有一部計算時間需要占用CPU,另一部分等待時間不需要占用CPU,通過量化分析,例如打日志進行統計,可以統計出整個Worker線程執行過程中這兩部分時間的比例,例如:

時間軸1,3,5,7【上圖中粉色時間軸】的計算執行時間是100ms 。 時間軸2,4,6【上圖中橙色時間軸】的等待時間也是100ms 。

得到的結果是,這個線程計算和等待的時間是1:1,即有50%的時間在計算(占用CPU),50%的時間在等待(不占用CPU):

假設此時是單核,則設置為2個工作線程就可以把CPU充分利用起來,讓CPU跑到100% 。 假設此時是N核,則設置為2N個工作線程就可以把CPU充分利用起來,讓CPU跑到N*100%。結論

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

經驗

一般來說,非CPU密集型的業務(加解密、壓縮解壓縮、搜索排序等業務是CPU密集型的業務),瓶頸都在后端數據庫,本地CPU計算的時間很少,所以設置幾十或者幾百個工作線程也都是可能的。

以上就是Java線程數究竟設多少合理的詳細內容,更多關于Java線程數的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
成人午夜电影网站| 久久精品一区二区国产| 不卡一区二区三区四区| 国产精品一区亚洲| 亚洲精品在线免费播放| 美女国产一区二区三区| 亚洲欧洲日本国产| 欧美一级理论片| 精品久久人人做人人爰| 偷拍一区二区三区四区| 黄色成人av网站| 精品国产伦一区二区三区观看方式 | 五月婷婷激情综合网| 午夜精品视频| 在线成人高清不卡| 视频一区欧美日韩| 亚洲理论在线| 欧美国产一区视频在线观看| 成人小视频在线| 欧美日韩免费在线视频| 亚洲青青青在线视频| 欧美xx69| 精品成人私密视频| 久草热8精品视频在线观看| 久久久亚洲一区| 中文字幕一区二区三区视频 | 一区二区三国产精华液| 91麻豆免费在线观看| 日韩一区二区电影在线| 久久国产麻豆精品| 91成人免费网站| 亚洲电影第三页| 在线观看亚洲视频啊啊啊啊| 久久久久久黄色| 国产成人日日夜夜| 精品污污网站免费看| 五月天欧美精品| 亚洲精品精选| 亚洲精品自拍动漫在线| 国产在线视频欧美一区二区三区| 久久久久青草大香线综合精品| 成人一区二区视频| 欧美日韩国产一区二区三区地区| 免费观看成人av| 久久精品综合一区| 亚洲福利一区二区| 西西裸体人体做爰大胆久久久| 亚洲综合小说图片| 亚洲综合日韩| 午夜国产精品影院在线观看| 国产精品一区视频| 有码一区二区三区| 在线视频免费在线观看一区二区| 亚洲综合丁香婷婷六月香| 一本色道久久综合亚洲精品高清 | 亚洲国产成人自拍| 午夜日韩福利| 国产欧美一区二区精品久导航| 成人免费va视频| 久久精品亚洲精品国产欧美kt∨| 欧美福利一区二区三区| 国产精品久久久一本精品| 欧美日韩亚洲免费| 亚洲特级片在线| aⅴ色国产欧美| 亚洲精选免费视频| 久久精品二区三区| 男女男精品网站| 欧美一区二区三区四区五区| 成人av动漫在线| 国产欧美日韩综合精品一区二区| 国产精品99一区二区| 国产欧美视频一区二区三区| 972aa.com艺术欧美| 亚洲国产精品成人综合| 影音先锋日韩资源| 亚洲午夜久久久久| 在线观看日韩电影| 国产盗摄视频一区二区三区| 日韩欧美第一区| 不卡欧美aaaaa| 国产精品福利一区二区| 国产精品伊人日日| 日本不卡一区二区三区高清视频| 欧美色爱综合网| 国产a视频精品免费观看| 国产日产欧产精品推荐色| 欧美午夜不卡| 亚洲丰满少妇videoshd| 在线精品视频小说1| 国产一区美女在线| 精品剧情在线观看| 亚洲视频日本| 亚洲成人av免费| 欧美疯狂性受xxxxx喷水图片| 粉嫩在线一区二区三区视频| 日韩欧美色综合| 欧美一区二区三区久久精品| 一级中文字幕一区二区| 久久久精品网| 国产91精品免费| 国产精品国产三级国产a| 国产精品一区亚洲| 国产福利精品一区二区| 欧美国产1区2区| 可以看av的网站久久看| 粉嫩高潮美女一区二区三区 | 亚洲午夜免费电影| 欧美日韩综合一区| 91麻豆精品秘密| 亚洲精品国久久99热| 91久久国产最好的精华液| 丁香亚洲综合激情啪啪综合| 国产精品久久久久久久蜜臀| 久久久青草婷婷精品综合日韩| 国产成人免费在线视频| 中文字幕日韩一区二区| 欧美中文字幕一区| 欧美承认网站| 蜜臀久久99精品久久久画质超高清| 亚洲精品一区二区三区香蕉| 亚洲九九精品| 麻豆91免费观看| 久久综合99re88久久爱| 亚洲国产欧美不卡在线观看| 九九精品视频在线看| 国产精品丝袜在线| 欧美三级中文字| 99久久综合精品| 午夜精品久久久久久久99水蜜桃 | 亚洲高清电影| 久久草av在线| 欧美韩国一区二区| 一本色道综合亚洲| 欧美暴力喷水在线| 日本女人一区二区三区| 久久久久久99精品| 色综合久久久久综合体| 91麻豆产精品久久久久久| 日本美女一区二区三区视频| 国产精品污www在线观看| 在线观看不卡一区| 91麻豆免费视频| 日韩在线观看一区二区| 中文字幕av一区 二区| 欧美视频日韩视频| 欧美成人有码| 精品亚洲免费视频| 亚洲尤物在线视频观看| 日韩免费电影一区| 欧美一级网站| 国内精品美女在线观看| 日韩国产欧美在线视频| 日韩精品自拍偷拍| 一区二区三区国产在线| 成人激情校园春色| 午夜精品久久久久久久 | 97精品视频在线观看自产线路二| 香蕉久久一区二区不卡无毒影院| 久久亚洲二区三区| 色呦呦一区二区三区| 成人黄色在线网站| 蜜臀av性久久久久蜜臀av麻豆| 国产精品第四页| 日韩一级欧美一级| 色婷婷av一区二区三区之一色屋| 激情综合久久| av电影在线观看完整版一区二区| 久久精品国产精品亚洲精品| 亚洲成a人片在线不卡一二三区| 久久精品欧美一区二区三区麻豆| 国产一区二区三区免费| 午夜精品视频一区| 日韩影视精彩在线| 日韩av不卡一区二区| 天堂精品中文字幕在线| 午夜精品久久久久久久| 亚洲18女电影在线观看| 亚洲成人1区2区| 亚洲va欧美va天堂v国产综合| 亚洲无线码一区二区三区| 亚洲成在人线免费| 奇米四色…亚洲| 狠狠网亚洲精品| 国产成人鲁色资源国产91色综| 成人18视频日本| 色综合色狠狠综合色| 国产精品啊啊啊| 亚洲高清av| 国产精品久久777777毛茸茸| 久久久青草婷婷精品综合日韩| 91精品福利视频| 欧美高清视频www夜色资源网| 欧美一级日韩免费不卡| 日韩女优制服丝袜电影| 国产偷国产偷精品高清尤物| 国产精品二区一区二区aⅴ污介绍| 亚洲青青青在线视频| 日韩中文字幕麻豆| 韩日精品视频一区|