前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我眼中的性能测试

我眼中的性能测试

作者头像
程序媛淼淼
发布2022-09-01 13:56:20
2410
发布2022-09-01 13:56:20
举报
文章被收录于专栏:程序员阿常

以下文章来源于CKL的思考空间 ,作者CKL的思考

笔者专注性能测试的时间大概有5年时间,其间也经历了性能测试主流工具从LR到Jmeter转变,监控工具从最早的Linux原生命令到界面花里胡哨的Glances、Zabbix等等。技术架构从单一的节点到多集群,业务对性能的要求越来越高,对于性能测试,有一点小的体会,后续会分多篇来聊聊。今天先说说我对性能测试的一些感观。

友情提醒,文末有福利哦!

01

性能测试的目标

看到这个小标题,大家一定都有很多自己的认知和看法,我会从两个方面进行简单的归纳:技术目标和业务目标。

对于技术目标,大概有4点需要我们去追求和改进的:

  1. 评估性能,定性分析:这个也是我们做性能的测试的初衷,当我们想要了解某个业务系统的性能状况时,我们会从各类已知的指标入手,常见的有TPS(每秒处理业务数)、ART(响应时间)、系统资源使用率等等。通过技术手段的优化,提升这类指标,给产品以信心,能够应对可能到来的流量洪峰。
  2. 明确参数配置:我们现在会大量地使用各类中间件、技术组件来解耦我们的系统,其中会涉及大量的参数配置信息。以前一直会有人问“Tomcat的最佳配置参数是多少,XXX参数应该怎么配置才合理呢”这类的问题。本质上,这类问题是没有定值的,需要我们结合业务一起去调整。最典型的,就是线程数的配置,各类中间件大多都有线程数配置,并不是配置越多越好,配置多了,浪费内存,配置少了,增加时间消耗,这个值需要有全局视角,结合业务架构进行统一的配置,否则单节点配置得再高,也不会达到预期值,因为有可能上游就不会有那么多线程流到你的这个节点上来。
  3. 获取扩展参数,做好预警:做一次好的、完整的性能测试,一定不是简单的给出一个TPS那么简单,对于高阶性能测试,我们都会要求测试出性能拐点在哪里,达到拐点时,瓶颈点是什么。为什么要关注这个呢?因为从高层的角度看,他们更关注的是什么情况下,需要我做扩容,先扩什么东西,以便系统能够撑过流量的高峰,这样对业务才会更有意义。
  4. 提升各种利用率:这个其实是最后的价值。在以前服务器本成比较昂贵的时候,我们会想办法尽可能的提升服务器的利用率,节约成本。但是现在,伴随着各种云,服务器成本在直线下降,我们面对的是更多业务的不确定性,所以前面三点就变得更加重要,提升利用率反倒显得没那么重要了。不过,如果真的做好前面三点,那利用率自然而然的也会上去,不用特意去纠结。

对于业务目标,主要有两点目标:

  1. 业务稳定性:这个是我们做性能测试的基本盘,本质上我们做各类测试都是为了维护业务的稳定性,通过性能测试,系统在面对流量洪峰时,能够平稳过渡,是性能测试的最大目标。
  2. 更好的用户体验:1秒的等待时间和5秒的等待时间,对用户的体验是完全不同的,因此,我们需要提升系统性能,来给用户更好的使用体验,让用户操作更丝滑、更顺畅,提升产品的友好度。

02

技术层面的支撑

性能测试是一个对技术的全面性要求非常高的测试能力,需要从业者具备较广泛的知识体系,能够通过各类监控指标,准确定位到系统瓶颈。所以需要扎实的技术功底,主要有以下三类:

1. 计算机原理:这是很多人都忽略的一件事,现在想要从事性能测试人员,大多数更关注于技术侧的提升,而忽略了最底层计算机原理,实际上这个才是根本,代码的运行,最终还是离不开CPU和内存。建议大家读读《性能之巅》、《深入理解计算机系统》。嗯,这两本书都很容易劝退你,加油。

2. 常见用技术组件:这类组件就非常多了,需要大家结合自己公司的技术架构选型去做针对性的学习,后续有机会展开来讲一些常用的。主要关注的内容是他们的实现原理是什么,如何构建通信通道,常见的错误使用有哪些,如何避免等等,这些网上的资料非常多,需要自己去尝试和验证是否正确。

3. 常见的数据存储组件:以前我们经常会说,性能问题80%出现数据层,对于数据库,我们会非常关注SQL的执行效率。现在的数据存储组件越来越多,Nosql、ES等等,需要大家根据实际需要去做针对性的学习。

03

非技术层面的支撑

除了技术层面的支撑外,为了更好地开展性能测试,我们还需要一些非技术的软技能来支撑日常的工作。主要有两个方面:

1. 分析方法论:面对各种各样的监控指标,我们如何快速地找到对自己有用的信息?一般的性能测试分析方法有分段、分层及二分法。分段和分层比较好理解,在很多地方我们也会用到,比如很多技术框架都提倡分层,每个层专注做自己的事。性能分析也一样,我们可以对被监控系统做好分层,然后逐步定位,缩小范围。

二分法主要用于快速定位并发数,例如当你发现产生1000的并发时,系统已经处理不过来了,这时候你就需要变成500(取1000的一半,看是处到上半部分还是后半部分),然后750(如果在上半部分,就再取一半,以此类推,是不是和排序很像?)。

2. 经济学基础:很多人会好奇做性能测试和经济学有什么关系。举个例子,性能优化,最终还是会回归到是用空间换时间(比如用内存处理数据),还是用时间换空间的问题(上传附件、分页查询)上来,这里面需要做一些动态的平衡,如何做取取舍,是调优时,需要我们去考虑的。

还有一个,就是边际递减问题,大家应该会发现,随着性能测试优化的不断深入,优化越来越难,结果也越来越不明显。前期你可能加个索引,性能就提升了几十倍,但到了后期,你改的代码越多,性能的提升反而不明显。理论上性能测试可以一直进行下去,但实际上后续的优化成本可能会非常高,需要我们在适当的时机停止优化。

04

小结

性能测试是一个庞大而复杂的工程,我们需要以终为始,明确每次性能优化的目标是什么,控制好成本问题,同时需要在平时注意积累各类技术体系,更应当关注技术的底层原理是什么。结合一些常用的分析方法论,快速定位问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员阿常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档