网站内容优化方案( 测试报告优化系统的特点及空间优化方法解析! )
优采云 发布时间: 2021-10-10 11:33网站内容优化方案(
测试报告优化系统的特点及空间优化方法解析!
)
对测试报告进行针对性优化 压力测试中发现问题后,需要进行针对性的优化。对于不同的系统,这个过程的策略是不准确的
是确定的,但大致可以分为以下几个步骤:
1. 定位性能瓶颈,找出系统存在的问题。不同的系统有不同的特点,在性能瓶颈上有不同的表现。一般来说,以下几个方面通常比较大
优化空间:
(1)磁盘 I/O 和文件操作
因为磁盘I/O读写速度比内存慢很多,如果程序在运行,如果需要等待磁盘I/O完成,就低
有效的 I/O 操作会拖累整个系统。
(2)网络操作
读写网络数据的情况与磁盘I/O类似。由于网络环境的不确定性,尤其是网上数据的读取
写入和网络操作可能比本地磁盘 I/O 慢。
(3)CPU
对于对计算资源要求较高的应用,由于长时间不间断地使用CPU资源,会导致CPU的竞争
性能问题。比如科学计算、3D渲染等对CPU有强烈需求的应用。
(4)高并发下的上下文切换和锁竞争等
如果不优化高并发程序,就会出现大量的锁竞争。激烈的锁竞争会显着增加线程上下文切换的开启。
Pin,对性能影响很大
(5)数据库
大多数应用都离不开数据库,海量数据的读写操作会相当耗时。并且应用程序可能需要等待
数据库操作完成或返回请求的结果集后,缓慢的同步操作将成为系统瓶颈。
2.确定调整目标并提出解决方案。在发现系统的性能问题后,需要做出相应的解决方案。
影响性能的典型问题,例如:
(1) 系统不响应高并发场景,如数据库连接池过低、服务器连接数超过上限、数据库锁控制
考虑不周等。
(2)内存泄漏,如长期运行下内存未正常释放,出现宕机等。
(3)数据库优化不足,业务增长,相关表众多,SQL优化不足等。
定位以上问题后,下一步就是提出合理的调整目标。
比如服务器资源有限,可以通过配置更多机器、服务云端等方式进行优化;
如果对高并发的支持不好,可以在代码层面进行优化,提高并发支持;
可以针对 SQL 语句优化数据库性能问题,例如慢速查询。
3.实施方案,进行迭*敏*感*词*发。上一步的分析给出了初步的性能优化方案。下一步是对计划中提到的内容进行有针对性的改进。
这个过程可以通过应用敏捷思想来迭代。开发完成后,为了比较优化结果,可以将调优后的系统
进行小规模测试。
4. 执行基准测试并分析调优结果数据显示了一切。性能优化的结果不能简单地用“感觉系统越来越快”来衡量。最好在优化前比较结果。
测试结果出来后,优化结果以图表的形式直观展示出来。基准测试是指科学测试工具的设计
和方法,实现对某类测试对象某性能指标的定量和可比性测试。比较测试结果并得出结论
结合能力评估和其他任务,系统可以最大限度地发挥其有效性。
一个阶段的优化工作完成后,最好进行总结反思,比如这次优化是否达到了目标?系统整体
性能有没有提高?用户体验有没有提升?以及如何在接下来的开发工作中做得更好。
使用JMeter进行压力测试实践 JMeter是目前比较流行的测试工具,这里简单介绍一下相关应用。
1.JMeter安装和使用Linux下可以直接下载安装,MAC系统输入,
下载 apache-jmeter-3.1.tgz。
下载完成后,解压得到安装包,进入解压目录/bin/,点击jmeter图标启动JMeter。
2.基本组件介绍 使用JMeter需要熟悉一些基本概念。这是编辑测试计划的界面:
(1)Threads 线程组
该组件主要用于控制Jmeter并发产生的线程数。只有一个组件(线程
Group),可以理解为每个线程都是一个虚拟用户。所有其他类型的组件必须是(线程组)节点
子节点。
(2)ConfigElement 配置单元
配合Sample组件,主要用于配置Sample如何发起访问服务器的请求。这个东西的主要特点
重点是可以将Sample的一些常用配置放在一个元素中,方便管理,配置单元有作用域。范围
就像树的关系一样,越是上层节点范围越大,离叶子节点越近
范围越小,上层范围的配置就可以被覆盖。
(3)定时器
这主要用于调整(线程组),控制每个线程运行测试逻辑的时间间隔(例如:发出请求)。
当然,在这个下面有很多类型的定时器。它们的主要功能是调整时间间隔,但每个组件都有策略。
稍微不一样。
(4)预处理器/后处理器
与 HOOK 类似,在执行测试之前和之后执行一些脚本逻辑。我没有专门用过这个组件
完了,不过一般功能是这样的,非关键部件。
(5)断言
意思是在Sample发送请求后,判断返回的结果是否符合预期。
(6)*敏*感*词*器
该组件不同于通常在 Web 中编程的侦听器。它从中获取操作以及 Jemeter 测试的运行。
行期间数据的一个组件,经常用到聚合报表组件,从中可以统计出测试的TPS,以及响应
时间等关键测试数据。
3. 执行第一次测试(1) 设置线程组参数
首先在TestPlan下添加一个ThreadGroup组件,设置线程组组件的各种参数。