电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Java線程數究竟設多少合理

瀏覽:5日期: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
相關文章:
主站蜘蛛池模板: LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 节流截止放空阀-不锈钢阀门-气动|电动截止阀-鸿华阀门有限公司 | 杭州双螺杆挤出机-百科 | 专业音响设备_舞台音响设备_会议音响工程-首选深圳一禾科技 | 产业规划_产业园区规划-产业投资选址及规划招商托管一体化服务商-中机院产业园区规划网 | 液氮罐_液氮容器_自增压液氮罐_杜瓦瓶_班德液氮罐厂家 | 北京公司注册_代理记账_代办商标注册工商执照-企力宝 | 金属雕花板_厂家直销_价格低-山东慧诚建筑材料有限公司 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 成都珞石机械 - 模温机、油温机、油加热器生产厂家 | 储气罐,真空罐,缓冲罐,隔膜气压罐厂家批发价格,空压机储气罐规格型号-上海申容压力容器集团有限公司 | 免费网站网址收录网_海企优网站推荐平台 | 上海租奔驰_上海租商务车_上海租车网-矢昂汽车服务公司 | 学习虾-免费的学习资料下载平台| 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | 电动垃圾车,垃圾清运车-江苏速利达机车有限公司 | 行星齿轮减速机,减速机厂家,山东减速机-淄博兴江机械制造 | 3A别墅漆/3A环保漆_广东美涂士建材股份有限公司【官网】 | 电磁辐射仪-电磁辐射检测仪-pm2.5检测仪-多功能射线检测仪-上海何亦仪器仪表有限公司 | 食品质构分析仪-氧化诱导分析仪-瞬态法导热系数仪|热冰百科 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 春腾云财 - 为企业提供专业财税咨询、代理记账服务 | 道康宁消泡剂-瓦克-大川进口消泡剂供应商 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 洗瓶机厂家-酒瓶玻璃瓶冲瓶机-瓶子烘干机-封口旋盖压盖打塞机_青州惠联灌装机械 | 数字展示在线_数字展示行业门户网站 | 连续密炼机_双转子连续密炼机_连续式密炼机-南京永睿机械制造有限公司 | 动环监控_机房环境监控_DCIM_机房漏水检测-斯特纽 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 滚筒线,链板线,总装线,流水线-上海体能机电有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 天津暖气片厂家_钢制散热器_天津铜铝复合暖气片_维尼罗散热器 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 国际高中-国际学校-一站式择校服务-远播国际教育 |