8-29 实战技巧:如何设置线程池
2021-01-29 11:16
标签:基本 节点 额外 系统 code 需求量 如何 做了 流量 Hystrix最重要的一个点。 8-29 实战技巧:如何设置线程池 标签:基本 节点 额外 系统 code 需求量 如何 做了 流量 原文地址:https://www.cnblogs.com/wangjunwei/p/12833549.html
线程池具体怎么设置不知道?里面的数量是怎么来的。和对于我们来说是一个非常大的困惑。
Hystrix的线程池在工作中设置的时候,有哪些技巧?
首先在我们业务系统中,有个很重要的指标就是QPS,更精确的说,他其实分三大类,包括RPS、TPS、QPS这三个分别是什么呢?一个是操作的次数就是单位时间内操作的次数,单位时间内查询的次数,单位时间内进行增删改一类的次数,
我们线程池设置的数量和系统的QPS是紧密关联的。QPS是统称,大家理解意思就可以了。
举个例子,我希望我的系统在2千到5千QPS,2千到5千在互联网的系统已经不是什么太大的问题了。非常简单。但是正常的业务系统,2千到5千的QPS不可能是单节点处理的。
一般来讲,比如说我有10个节点,10个节点指的是10个容器,或者是10个机器,配置都是一样的。部署微服务,部署10份。然后通过负载均衡进行转发。这样就相当于它平摊了我们的业务流量。也就是平摊了我们QPS的需求。
所以大家就可以想,比如说我现在有个2千的QPS,紧接着我有100台机器,那么这个时候每台机器理论上的QPS是20.当然它比实际还要多,20个QPS在我每台机器上单独设置应该是什么样子呢?
比如说我们的TP99,正常是200毫秒,我每台机器负载的量大概是20到30QPS,下面这里写的是30RPS, 我们这里可以理解为30QPS,每一个响应大概在200毫秒上下,
30qps 乘以 200毫秒。乘完之后,就知道单位时间内我大概需要6个线程才能满足你现在的业务要求。就是你的峰值要求。但是因为线程的切换和处理,它本身是有业务开销的,以及有一些不确定的情况,可能导致一些线程的浪费,在这种情况下6个线程不足以满足我们的要求,所以这个时候她需要加一些冗余量,冗余量子啊Hystrix里面默认给你加到了10.
也就是说你的系统是200毫秒以内返回,那么hysrix给你的默认值就可以满足你30rps的操作要求。
冗余一般在0.3到0.5之间,
线程队列次数的限制。假如你的线程池默认是10,1.5倍到2倍之间队列长度就可以
基本就两个变量,一个是qps的需求量,这是对你系统要求的变量。
这是你系统开发的功底问题。例如有的人能开发到400毫秒,有的人500毫秒,线程计算出来后,再打个0.3到0.5之间的冗余。
然后就是队列的长度,队列长度说实话,可设可不设。如果上面的线程池数量设置了就已经可以满足你当前的需求,如果不满足就可以再设置下队列数
设置在1.5到2倍之间。因为它本身并不会给你带来什么额外的开销。它只是给你做了一个缓存队列。
以上就是hystrix给我们的一些建议。这些足以让你完成一些初始的设置。这些都设置完了就要去线上做压力测试。测试完成后,看看能不能满足的你要求。不行就再回来设置,这是一个不断调整的过程。
结束