热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

性能分析性能工作流程

目录本篇内容解决方案持续集成ant安装配置jenkins安装配置无界面运行性能测试分析数据分析性能测试流程1.测试准备2.搭建环境3.测试脚本开发4.测试执行5.结果分析与调优6.


目录

  • 本篇内容
  • 解决方案
  • 持续集成
    • ant安装配置
    • jenkins安装配置
  • 无界面运行
  • 性能测试分析
    • 数据
    • 分析
  • 性能测试流程
    • 1. 测试准备
    • 2. 搭建环境
    • 3. 测试脚本开发
    • 4. 测试执行
    • 5. 结果分析与调优
    • 6. 测试结果与结果跟踪
  • 课程回顾
  • 答疑


本篇内容


  • 持续集成

解决方案

jenkins + ant + jmeter:


  • jenkins:持续集成的领导者
  • ant:代码的编译、测试、部署 (maven之前用的是ant)
  • jmeter:性能工具、脚本

主机启动:


  • 运行 -> 远程启动 远程启动所有
  • 远程启动错误查看

持续集成


ant安装配置


  • 下载、解压
  • 配置环境变量:ANT_HOME PATH=%ANT_HOME%\bin
  • 修改jmeter.properties jmeter.save.saveservice.output_format=xml
  • 拷贝:jmeter的extras中的ant-jmeter.**.jar放到ant的lib文件夹中(用于邮件)。
    验证:在jmeter的extras文件夹中cmd,输入ant.bat -file build.xml -Dtest=Test
  • 修改build.xml:进入jmeter的extras文件夹,找到build.xml文件(难点,也是最重要的一个地方)

把ant的压缩包解压后,如下图所示:
在这里插入图片描述
默认为csv,修改成xml
在这里插入图片描述


jenkins安装配置


  • 到https://www.jenkins.io下载msi、解压。下载一个tomcat,解压以后,把jenkins.war包放到tomcat webapps的文件夹下面,接下来到tomcat bin文件夹下面找到startup.bat启动tomcat,就可以启动本机的tomcat。
  • 安装完成后,浏览器中打开localhost:8080/jenkins。如果是解压在ROOT文件夹下面,就不需要路径带上jenkins。
  • 修改密码、安装推荐插件
  • 登陆jenkins->进入系统管理->pluginManager管理插件安装AntPlugin和PerformancePlugin是否已经安装
  • 系统管理->GlobalTool Configuration 配置Ant路径
  • 新建一个任务,选择freestyle project
  • 在任务的“构建”中,选择invoke ant,targets要填写build.xml中的antcall的值,保存应用。

在这里插入图片描述
在这里插入图片描述
如下为第一次安装完成后,打开jenkins的页面。
在这里插入图片描述
在路径下,找到密码,直接把密码复制粘贴到这边来。
在这里插入图片描述
在这里插入图片描述
选定Ant插件安装
在这里插入图片描述
插件安装完成之后,会进入到创建第一个管理员用户的界面。
在这里插入图片描述
这个Jenkins URL地址不要去修改
在这里插入图片描述
Jenkins安装配置完成。
在这里插入图片描述
点击开始使用Jenkins,会打开如下画面。
如果安装了中文插件,Jenkins是可以中文汉化的。
在这里插入图片描述
左侧菜单栏中点击Manage Jenkins,出现如下System Configuration:

在这里插入图片描述
点击上图中右上角的Manage Plugins,会进入到如下界面:
可以在可更新/可选插件/已安装里面搜索Ant Plugin

在这里插入图片描述
在这里插入图片描述
点击Global Tool Configuration
在这里插入图片描述
全局配置:
在这里插入图片描述
若未安装Ant插件,是看不到该配置入口的。
在这里插入图片描述
点击Ant安装…,默认就会有一个。然后保存&应用。那么jenkins中就已经配置好Ant了
在这里插入图片描述
点击新建Item,创建Jenkins job。
在这里插入图片描述
会打开一个新建Jenkins job的界面:
在这里插入图片描述
输入一个任务名称,选择Freestyle project,点击确定。
在这里插入图片描述
配置方式只需要在构建这里,点击增加构建步骤,选择Invoke Ant。
在这里插入图片描述
选择刚才在全局配置里面添加的Ant名称,如刚才配置的是ANT-1.9
在这里插入图片描述
只需要把build.xml文件的路径复制过来,点击保存并应用。
在这里插入图片描述
build.xml文件修改


  • project
  • target
  • property
  • mail配置
    在这里插入图片描述
    折叠起来后,只有一个project。
    在这里插入图片描述
    Jenkins中Ant Target如果没有填写的话,会默认用build.xml的default的值,目前defalut值为all,当target为all的时候,默认情况下会做三件事情,第一件test进行测试,第二件report生成报告,第三件mail邮件发送报告。
    target name为test
    在这里插入图片描述
    target name为report
    在这里插入图片描述
    target name为mail
    在这里插入图片描述
    需要修改jmeter.home
    在这里插入图片描述
    时间变量的格式:
    在这里插入图片描述
    testplans
    在这里插入图片描述
    如下为要用的jar包,无需更改。
    在这里插入图片描述
    生成报告
    在这里插入图片描述
    如下两个皆为样式文件,选择哪个样式文件可以在report的style处进行修改。
    在这里插入图片描述
    在这里插入图片描述
    mail的部分,smtp服务默认端口25,发送者的邮箱需要去开通smtp服务,例如qq邮箱默认smtp服务可能没有开启的。
    在这里插入图片描述
    填写授权码,不是密码。
    在这里插入图片描述
    把报告给删了,如果不想删除报告,那么就把这句注释掉。
    在这里插入图片描述
    注释如下:
    在这里插入图片描述
    点击Build Now运行任务
    在这里插入图片描述
    可以查看控制台输出,第一件事先做测试:
    在这里插入图片描述
    此处就是一个聚合报告
    在这里插入图片描述
    第二件事report
    在这里插入图片描述
    打开html文件查看性能测试报告
    在这里插入图片描述
    点击右上角的+号,把性能测试报告展开显示。
    在这里插入图片描述
    每一次请求的实际情况
    在这里插入图片描述
    第三件事情mail,就是把生成的报告发送出来。发送的邮箱用户名和密码是错误的,所以发送测试报告报错了,邮件没有发出来。
    在这里插入图片描述
    jmeter持续集成邮件发送失败,可能因为缺jar包,jar包丢到lib文件夹下面去。
    在这里插入图片描述

无界面运行

无图形界面可以更节约资源,可以让服务器的资源更可能多的用于性能测试。
不需要打开jmeter,只需要运行写好的脚本。图形界面用于脚本的编写和调试。真正做性能测试的人,一般不会用图形界面来做测试,一般用的是无图形界面的方式做测试。用无图形界面的方式,监听器都可以不用,disable掉。
在这里插入图片描述
命令如下所示:
在这里插入图片描述

在这里插入图片描述
总共请求了2831次
在这里插入图片描述
打开nongui001文件夹下面的index.html文件
在这里插入图片描述
测试报告如下所示:
在这里插入图片描述
Response Times Over Time
在这里插入图片描述
随着响应时间的变化,最大才397ms,响应时间还是非常快的。如下为随着时间变化,并发用户图。在这里插入图片描述
如下为Throughput下每秒点击次数Hits Per Second
在这里插入图片描述
Throughput下面还有Transactions Per Second的图,与Hits Per Second的图完全一致,说明现在还没有性能问题。
在这里插入图片描述
还有Response Time Percentiles的图,时间主要集中在400-500ms以内,响应时间还可以。
在这里插入图片描述
需要注意:
**注意点一:**每次运行该命令时,这边保存的文件名每次都需要不一样。不能重复,没有所谓的覆盖
在这里插入图片描述
没有修改文件名,会报如下错误:
在这里插入图片描述
**注意点二:**如下的文件夹,一定要是全空文件夹,或者不存在的文件夹。
在这里插入图片描述
若同一个命令执行两遍,会报如下错误。
在这里插入图片描述


性能测试分析


数据

场景设计、监视图表:


  • 设计场景:阶梯式、波浪式
  • 监视器:用于收集用于性能分析的数据
    TPS图标、聚合报告/汇总报告、查看结果树、响应时间、吞吐量
    服务器资源监控:cpu、内存、磁盘io
  • 分析思路: 硬件分析->软件分析
    服务器硬件瓶颈 -> 网络瓶颈 -> 服务器操作系统瓶颈(参数配置、数据库、web服务器)->应用瓶颈(sql语句、数据库设计、业务逻辑、算法)【由外而内、由表及里、层层深入】

分析


  • cpu问题:有上下文和使用率的分析。在使用的时候,会进行来回的切换,就会出现中断,中断有软中断和硬中断两大类型,就会涉及到上下文。
  • 内存问题分析:内存跟CPU进行数据交换,从磁盘读取数据,发送到CPU里面去,相当于过桥,有内存溢出或者内存泄漏等问题。
  • 数据库问题分析
  • 网络问题分析
  • nginx问题分析
  • 负载均衡问题分析

性能测试流程


  • 测试准备
  • 搭建环境
  • 测试脚本开发
  • 测试执行
  • 结果分析与调优
  • 测试报告与结果跟踪

1. 测试准备


  • 需求分析——熟悉业务,性能测试人员很多情况下,是不参与功能测试的。需要理解构架,需要接口调得通,熟悉数据业务流走向,需要熟悉整体业务。通过熟悉业务,来熟悉软件的功能和架构。
  • 明确性能测试目标,找出或验证性能指标。如果没有做过,就找出。如果做过,就对比前后两次的性能变化。需要得到哪些性能指标需要明确出来,有的企业关心TPS,有的企业关心并发用户,有的企业关心响应时间。具体看项目,不同的项目侧重点不同。
  • 了解 软件功能、架构。一个系统都是由多个服务构成的。
  • 制定 测试模型
  • 指定测试计划,做好工作量评估

2. 搭建环境


  • 工具选项与准备。协议不一样,所用的工具就会不一样。如果用的是websocket或者mq这些互联网协议,选型用loadrunner是搞不定的,只能采用jmeter,选择工具也是有关系的。
  • 被测系统环境搭建(服务器、服务版本更新、数据库数据准备)Docker之类的,mysql5或者mysql7/8数据库版本也是有差别的,性能上有明显区别。
  • 网络配置

3. 测试脚本开发


  • 协议,例如http协议
  • 制作脚本。真正性能测试人员不会去录制脚本。用户定义变量和用户参数之间的差异?
  • 调试脚本
  • 验证脚本

4. 测试执行

真正性能测试执行的时候,是用无图形界面来执行的。


5. 结果分析与调优

优化的过程,寻求一个平衡。最优性能,并不是得到某一处的最大性能。
可能这个地方调优了,又引出其他方面的问题。反反复复进行。


6. 测试结果与结果跟踪

html报告,自己截图写到word文档里面。
如果是底层问题,短期无法修复,那需要记录缺陷,长期跟踪。


课程回顾

在这里插入图片描述
jmeter里面完整的脚本会包含哪三个组成部分:


  • 线程组
  • 取样器
  • 监听器(可有可无)

面向目标场景需要重点学习和掌握:
在这里插入图片描述
在这里插入图片描述


答疑

怎么找出具体的并发用户数?
0-100的过程中,突然某一个时间点突然出现这个并发用户数在逐渐增加,原先的响应时间是平均的,但是响应时间突然一下子变得很高,变成2秒或者3秒以上,或者是说TPS值不升反而下降了,就已经到拐点区间了。还有一种情况就是报错了,发现有请求失败的情况,这种情况也是拐点区间到了。


推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
author-avatar
别想着摆脱_525
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有