1
業務線程池 加快io線程效率(不處理業務) 避免 同步處理回執時 意外阻塞 io線程,或handler處理太慢拖累io線程,從而導致堆外溢出
缺點是:業務處理完后,待寫入,發現要切換線程到io線程,加大線程切換的開銷,與netty3讀寫非同一線程有些像
如果僅僅handler處理慢,加大worker線程可緩解
即使要付出線程上下文切換的代價,也建議使用非阻塞的方式,
比較好的做法是用mq或disruptor等高性能隊列,以免阻塞io線程
參考:
1)
https://mp.weixin.qq.com/s?__biz=MzAwNzM1NjQyNg==&mid=2649962670&idx=1&sn=fea574180ccb8a7f4a7a2f3811f5fd09&chksm=8378f1cbb40f78dd34027efb3e09ca54f965b54f3d7702acf00d9cb37b8f6574326ed9a97d14&mpshare=1&scene=1&srcid=1025ixQnnhxAWRK6KZwOhMyL&key=9ec638334fce6a48492debe7e2682c5bdc4e75c453c0a7c05215e8a02e1c1d11afd628d103e529c858c4072d9804700b946a46caa8acea26328e680e21bcc448530706ccf72d5d3fbfff6d25ddc51fa4&ascene=0&uin=MTA2NzUxMDAyNQ%3D%3D&devicetype=iMac+MacBookAir6%2C2+OSX+OSX+10.10.5+build(14F2511)&version=11020012&lang=zh_CN&pass_ticket=DJCutZN70YSX5MvhvFlrbJcCzmL%2BMr8fpo3x1wp99RJRCkJZKwgUcoYSQyV0n8CG
2)
https://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247485224&idx=2&sn=510b6f2de976b80f4f2c65988338620a&chksm=fa497899cd3ef18f7d61eafcf372c61412ca8dda121c650370cafcd707054703a59e63dc7e7b&mpshare=1&scene=1&srcid=10093E4oi3IqrrgTyjzPeQ4v&key=aabb2ccd6a655235489a98a8010871fd860370d6dc76bd25b584f375d8293bf0148b8d36c8905a912b770991dec6af2a8967d227316cd6c07c5883567bdb7ccd8f3a41eadcafbe74c569df290b1780f6&ascene=0&uin=MTA2NzUxMDAyNQ%3D%3D&devicetype=iMac+MacBookAir6%2C2+OSX+OSX+10.10.5+build(14F2511)&version=11020012&lang=zh_CN&pass_ticket=3sXqr7c2oEvhreALgBwX%2FGLK0mOv%2BqBK9kOHRAlS3NHnD19yGGWL0GX1fFKdJ7eU
https://blog.csdn.net/u010739551/article/details/82887411,該鏈接出於線程切換的性能損耗,建議使用io線程write
write異步與流量控制 4.0.29.Final 該鏈接指出了業務線程write會經歷增加-減少-增加 3次,而在io線程write只會增加1次
重點:堆外溢出
客戶端異步、服務端異步與並發事務處理數、連接數的關系【重要】 提示了,是否開啟業務線程池還影響單個連接可處理的並發事務數;還用廁所理論形象的描述了使用io線程導致堆外溢出時的廁所場景