如何识别 TPS 拐点

先看一下这张图。它聚合了响应时间,TPS,活动线程三个性能指标的监听。注:这张图上的性能指标都是以运行时间来作为单位的

从图上能看出来几个趋势
1:负载是不断越高的,最终会达到 300 并发
2:tps 上升到 900 之后,就不再增加了,并长期保持在 900 左右
3:运行一段时间之后,响应时间开始升高,但是趋势不明显

问题来了
TPS 曲线起起伏伏的,但是也还算稳定。有的朋友会认为还没有到达瓶颈点,可以继续加压。那么到底有没有到达瓶颈点呢?
分析
瓶颈点到底怎么分析?其实用下面的原则就可以判断出来
在负载逐渐升高的情况下,tps 却长期不变。这并不是说明性能很稳定,而是说明我们的单线程 tps 是在逐渐下降的(单位时间总 tps/活动线程)。
再分析响应时间,我们的响应时间其实也是在逐渐升高,从侧面反映出线程的 tps 是在下降的。
但是具体在多少负载量的时候我们的瓶颈点已经到达?这张图上不好计算,我们换一个监听器

Transaction Throughput vs Threads

这个监听器有两个指标,纵坐标是线程 tps 总数,横坐标是活跃线程数。记住这两个哦~
我们通过这张图可以看出,随着活跃线程数的不断增加,线程总 tps 会达到一个相对的最高点,然后开始下降。也就意味着我们的单线程 tps 开始衰减

总结
性能是否衰减,是通过单线程 tps 来判断的。当我们的负载持续升高的时候,如果 tps 不再增加,说明性能已经开始衰减,此时的负载可以称之为最优负载。如果继续增加负载,tps 反而会出现下降的趋势,接着服务器会出现异常,负载达到极限值,此时的负载称之为最大负载


↙↙↙阅读原文可查看相关链接,并与作者交流