压测:
压测的目的在于测试系统的吞吐量以及承载业务需求情况下的资源瓶颈
例如一个接口,单独调用耗时在1秒左右,其中IO等待时间900ms, CPU执行时间100ms
并发数是1的情况下,每分钟系统吞吐量是60
但是并发数是1的时候系统资源都会有较大的空闲,如果其他资源都充足的情况下,我们并发数开到10,CPU会涨到100%(暂不考虑CPU任务调度的损耗等),但是系统吞吐量会涨到600
此时并发数如果继续往上涨,CPU负载超过系统能承载的能力,竞争开始激烈,会发现随着并发数的上升,系统吞吐量反而下降
因此我们通过不断增加并发数能发现系统的资源瓶颈
更极端的情况,如果上述接口直接启动100的并发请求压测,可能直接将系统压垮,系统吞吐量会降低到接近0,这就是我们常说的系统被拖垮的状态
所以一般而言我们需要测出来系统承载的极限并发量,以及可接受的并发量
但是系统仍然可以正常运行的并发量的最大值;一般情况下在可接受的并发量下,系统瓶颈资源接近极限
我们可以根据并发量的最大值以及此时的系统瓶颈资源占用来建立对瓶颈资源的监控告警,以及对并发流量进行限流防止系统被压垮
还有一种情况是压测过程中如果发现我们预想的资源瓶颈尚未达到瓶颈,但是并发量就是上不去,一般就是遇到预期内的资源达到了瓶颈,例如实际生产环境中一般业务系统的资源瓶颈往往是CPU,但是如果业务中对磁盘读写过于频繁,会看到CPU远远尚未打满,但是并发量就是上不去的情况,而此时如果不特别关注磁盘的写入性能,会被这种情况下的内存、CPU核心资源未占满但是并发量上不去的现象困扰。
网友评论