软件测试技术之全链路压测经验(下)

  1. 全链路压测优化思路

性能优化的核心在我看来其实就是一个充分利用系统资源并平衡IO的过程。这句话怎么理解,首先在保证代码没有问题的情况下,充分利用系统的cpu、内存、磁盘资源,一般来说在保证cpu、内存都消耗到80%以上基本上就达到了性能峰值了,但是我们在压测过程中常常遇到的问题是cpu、内存消耗都不高,而是卡在了IO上,IO包括了磁盘IO、数据库IO、网络IO,我们需要根据监控的数据从这3方面去找到瓶颈,并去解决IO的问题。一般来说造成这种情况一般都是因为IO聚集导致了阻塞,可以考虑采用缓存、异步的方式去解决,对于一些关键交易的事务的完整性可以考虑采用先缓存最后通过缓存同步数据库的方式来保证最终一致性。

全链路压测一般可以从3个层面去进行优化:

1)优化单个系统性能

就算不进行全链路压测,单个系统的性能优化也是要考虑的问题,对单个系统的优化,其实方法有很多,但是万变不离其宗,就是在压测过程中监控系统各项指标,从中挑出慢交易,针对慢交易进行优化,对于联机系统大部分都是因为各种IO问题导致性能上不去。可以根据各种介质IO访问的性能来优化(内存缓存>文件>数据库>网络),基本上通过缓存和异步处理这两颗银弹就可以解决80%的性能问题。

当链路上的单个系统性能提升了,整体的全链路性能自然就提升了。

2)优化关联路径

但是在优化的过程中,我们常常发现绝大部分系统性能都很高,但是总的TPS还是很低,这就需要去根据监控了解下目前整个链路上的性能瓶颈到底在哪?通过全链路监控可以发现整个业务流程在哪个节点耗时最长,那么这个耗时最长的节点就是我们需要优化的地方,只要这些关键路径的性能提升上来以后整体的性能就上来了。关键节点的优化方式和单系统优化思路一致。

3)优化业务流程

很多开发人员都会将优化思路集中在技术层面,但是很多时候从业务流程上进行优化效果可能更好,而且提升的效果会非常明显。业务层面的优化主要是从分散IO的角度去考虑,将实际业务场景中的用户请求进行分散,例如常见的大秒系统、验证码系统、游戏工具等都是为了进行业务层面的IO分散来保证。这类业务流程的优化首先要梳理清楚整个业务流程,包括所有的细节。然后针对每个环节在保证用户体验的情况下分散用户请求,这样可以最大限度的保证体验。

总结

整个压测优化过程就是一个不断优化不断改进的过程,通过长期的循序渐进的改进不断发现问题,优化系统,才能让系统的稳定性和性能都得到质的提升。

整个压测优化的思路其实和高并发架构设计的思路是一致的,接下来也会写一些关于高并发架构的文章,本篇的全链路压测只是给大家做个入门介绍,其中涉及到的问题远远不止文中提到的这些,而且问题的解决办法也远远不是说的那么简单,造虚拟用户、虚拟商品并不是随便造的,数据隔离也不是简单加个前缀什么的就可以的,也是有很多讲究的。

文章来源:网络 版权归原作者所有

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系小编,我们将立即处理

你可能感兴趣的:(IT,软件测试,程序员,软件测试)