加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

京东资深架构师:高性能高并发服务的瓶颈及突破思路

发布时间:2021-01-08 06:17:53 所属栏目:安全 来源:网络整理
导读:副标题#e# 《京东资深架构师:高性能高并发服务的瓶颈及突破思路》要点: 本文介绍了京东资深架构师:高性能高并发服务的瓶颈及突破思路,希望对您有用。如果有疑问,可以联系我们。 本文根据DBAplus社群第74期线上分享整理而成 ? ? ? ? ? ? ? ? ? ? ? ? ?

在绝大多数的开发中,线程池技术就已经足够了,但是线程池在充分榨干cpu计算资源或者说提供有效计算资源方面并不是最完美的,以一核的计算资源为例,线程池里假设有x个线程,这x个线程会被操作系统依据具体调度策略进行调度,但是线程上下文切换本身是会消耗一定的cpu资源的,假设这部分消耗代价是w,而实际有效服务的能力是c,那么理论上来说w+c 就是总的cpu实际提供的计算资源,同时假设一核cpu理论上提供计算资源假设为t,这个是固定的.

所以就会出现一种情况,当线程池中线程数量较少的时候并发度较低,w虽然小了,但是c也是比较小的,也就是w+c < t甚至是远远小于t,如果线程数很多,又会出现上下文切换代价太大,即w变大了.虽然c也随之提升了一些,但因为t是固定的,所以c的上限值一定是小于t-w的,而且随着w越大,c的上限值反倒降低了,因此使用线程池的时候,线程数的设置需要根据实际情况进行调整.

2、基于事件驱动的模式

多线程(线程池)的方式可以较为方便地进行并发编程,但是多线程的方式对cpu的有效利用率其实并不是最高的,真正能够充分利用cpu的编程方式是尽量让cpu一直在工作,同时又尽量避免线程的上下文切换等开销.

图7 epoll示例

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读