添加时间:2024-07-08 14:19:09
系统上线必会经历测试阶段,功能测试我们可以按照产品的设计原型去执行一条条测试用例来覆盖产品功能点。但是在功能测试之外,如果一个用户接口层服务,我们还需要知道服务的性能指标以了解并评估这个服务在实际的生产环境中可以应对多大压力,我们可以根据这个数据情况根据不用的场景时间去对应的增加机器节点或进行重构系统。
我们进行性能测试的目的是想真实的了解服务的性能,这个测试可能是一个单机的压力测试,可能服务链路比较简单,单体服务就支撑了整个访问请求。也可以是一套全链路的性能压力测试,例如从用户到下单到购买一件商品,到底是哪个节点性能较差,其中可能涉及很长的一套分布式微服务架构。例如淘宝最先实施的全链路压测就是为了达到这样的目的,才有了后来历届双十一的平稳进行。
我们怎么才能增加服务的性能呢?增加服务器的数量就可以增大服务器的性能吗?作为一个架构师,我们该如何解释给老板让他同意我们的架构优化方案呢?性能好了用户体验就一定好吗? 用新的技术就一定能优化架构吗? …
其实关于事物都有很多方面,关于性能体现也一样。分为主观视角和客观视角。主观视角比如站在用户的角度,我们的服务性能已经到了极致了,也没有任何传输损耗,但是客户端在中国,服务端在美国,只是光速传播的速度30ms已经消耗了掉了,单纯这个链路方式我们已经没有任何优化手断了。如果这时候我们给用户返回一个友好的提示,这样用户体验就会很好了。再比如,我们从网站下载一个东西,如果只是单纯的一个正在下载中的提示,那么用户会各种心理去怀疑你的服务或是网络,但是我们给用户一个进度条,用户就可以很清楚的了解到当前的一个具体情况,用户的心理被得到了重视,用户体验感就会很好。那么站在客观角度去衡量一个软件,就是我们该关心的服务性能问题了,我们会有各种指标去跟踪链路的请求耗时长短,所以我们拿到这些指标数据才能去真正的去做一个系统的性能优化,是否可以去增加机器数量。综合以上两个因素,我们就可以拿到一份实在的报告去给老板说,我们的系统需要优化重构了。
但是当并发数超过一定限制之后,会无限制的占用系统资源,导致响应时间无限大,吞吐量为0。这时候系统就要崩溃了。这时候又有一个重要的指标,就是性能计数器。
性能测试是一个总称,具体细分可以分为性能测试,负载测试,压力测试和稳定性测试。
响应时间和tps这两条曲线是对应的。
这是一个系统性能测试的运行情况,我们可以拿做参考,作为一个系统的架构师绝不能让你的系统一直在c点运行,一直在b点左右是最理想的情况,但是如果超过c点你的系统很可能就要崩溃了。那么到底是在b点上还是下呢,选择更安全还是更经济,这就取决你Trade-Off了。
了解了性能测试的一些操作,我们可以得到系统优化前后的一些数据对比,这时候去和你的leader去汇报业绩或是要资源,一切就显得那么顺理成章了。我们可以向如上图一样根据数据绘制出优化前后的对比图,让你的工作更有分量。
压力测试指标。
性能优化前后数据对比。
这样的图我们可以用excel等等都能很简单的自动绘制。有了直观的证明,一切都不言而喻。
我们优化一个系统的性能一切都需要根据原则。我觉得两点很重要,
缓存
缓存主要优化读操作。从内存获取数据,减少响应时间,减少数据库访问,降低存储设备负责压力,缓存结果对象,而不是原始数据,减少cpu计算等。
异步
使用异步可以做到即时响应,更好的用户体验,控制消费的速度,获得合适的负责压力,异步主要优化的就是写操作。
-集群
互联网技术的发展路径就是,更多的用户访问需要消耗更多的计算资源,单一的服务器计算资源是有极限的,所以需要增加更多的服务器。集群的目标只有一个,就是如何使用多台服务器对使用者而言看起来像一台服务器。
最后,值得强调一点,软件的性能优化,我们不要一上来就想多线程、缓存等,这会限制我们的技术发展,很多时候软件性能不好,仅仅是因为你的代码太烂了。写清晰的代码,保证架构的整洁,这是很重要的。
地址:海南省海口市电话:0898-08980898传真:0898-1230-5678
Copyright © 2012-2018 耀世娱乐-耀世注册登录入口 版权所有ICP备案编号:琼ICP备xxxxxxxx号