华为云用户手册

  • 使用JMeter原生压测 JMeter测试计划调试成功后,保存jmx文件以及csv文件。 准备测试资源,创建私有资源组。 登录性能测试服务控制台,在左侧导航栏中选择“测试资源”,单击“创建私有资源组”。 (可选)首次使用时,请根据提示信息,授权性能测试服务创建私有资源组。 进入创建资源组页面后,如果是首次使用没有云容器引擎服务CCE集群,需要先执行创建集群然后再创建资源组。如果已有可用的云容器引擎服务CCE集群,直接执行创建资源组。 创建集群。 单击页面上方的“创建集群”,进入购买CCE集群页面。创建集群操作请参考购买CCE集群,设置集群参数。 集群管理规模选择与执行节点个数相关,请根据需要压测的并发用户数,创建对应规格的节点。例如,需要20个执行节点,那么创建集群时集群规模选择50节点即可满足业务需求。 CCE集群的网络模型建议选择“容器隧道网络”,容器网段和服务网段需要与被测应用保持一致。 单击“下一步:插件配置”,默认选择即可。 单击“下一步:规格确认”,确认集群配置信息无误后,勾选已阅读使用说明,单击“提交”等待集群创建,集群创建预计需要6-10分钟。 集群创建成功后,返回集群管理页面,单击要创建节点的集群所在行的,进入创建节点页面。创建节点操作请参考创建节点,设置节点参数。 节点规格至少为vCPU为4核,内存8GB。 操作系统需选择欧拉EulerOS。 创建的节点数量至少需要2台(1台调试节点、1台执行节点),具体数量由压测对象要求规格决定。例如,压测10万并发用户数,vCPU为4核,内存8GB的资源需要21个执行节点(1个调试节点,20个执行节点)。 当CCE集群节点与被测应用不在同一VPC网络时,建议CCE集群节点绑定弹性IP。可使用已有的弹性IP,如果没有弹性IP也可以选择自动创建。自动创建弹性IP时,计费方式推荐按流量计费,带宽设置尽可能选择较大值,否则可能影响压测效果。系统根据您的配置创建弹性IP,并自动为每个节点进行分配。当创建的弹性IP数量小于节点个数时,会将弹性IP随机绑定到节点上。 单击“下一步:规格确认”,确认节点配置信息无误后,勾选已阅读使用说明,单击“提交”等待节点创建。 节点创建成功后,返回性能测试服务控制台。 创建资源组。 在左侧导航栏中选择“测试资源”,单击“创建私有资源组”。 参照表1设置基本信息。 表1 创建私有资源组 参数 参数说明 资源组名称 新建私有资源组的名称,可自定义。 节点集群 在下拉框选择已创建的CCE集群。 调试节点 选择执行压测的管理机。 调试节点在资源组创建成功后不可修改。 执行节点 选择执行压测的执行机,即在压测过程中能够提供自身性能数据的施压目标机器。 单击“创建”。 创建JMeter测试工程。 返回性能测试服务控制台,在左侧导航栏中选择“JMeter测试工程”,单击“创建JMeter测试工程”,输入工程名称,单击“确定”。 导入jmx文件。 在JMeter测试工程页面,单击编辑测试计划。 在“测试计划”页签中,单击“创建测试计划”。 在弹出的窗口中单击“添加文件”,选择格式为jmx的文件,单击“上传文件”,导入成功后将自动关闭窗口并返回“测试计划列表”页签,可以看到已添加的测试计划。 图1 导入jmx文件 jmx文件大小限制为10M。 当前支持基本的JMeter脚本,包括线程组、HTTP请求、HTTP信息头管理器、请求参数、超时时间,BeanShellt等。建议您使用5.2.1以上版本的脚本进行导入,以免出现脚本解析错误。 (可选)在“测试计划”页签中,单击“第三方jar包”,在弹出的窗口中单击“本地导入”,选择测试计划所依赖的jar包并导入,导入成功后关闭窗口。 图2 导入jar包 jar包大小限制为10M。 (可选)导入变量文件。 在“测试计划”列表对应的测试名称后单击,选择“变量文件”。在弹出的窗口中单击“本地导入”,选择测试计划所引用的变量文件并导入,导入成功后“关闭”窗口。 图3 导入变量文件1 图4 导入变量文件2 编辑线程组。 单击JMeter测试计划的任务名称进入线程组列表,可以编辑线程组的部分参数,编辑完成后单击“确定”。 线程数:对应JMeter本地程序中的“Number of Threads”。 预热时间:对应JMeter本地程序中的“Ramp-up period”。 循环次数:填写需要测试的循环数。 图5 编辑线程组 调试JMeter测试任务。 单击“调试”,选择对应的测试资源组作为执行器后单击“启动”启动调试。如果调试结果报错,可根据日志信息,修改用例后重新调试。 图6 启动调试 执行JMeter测试任务。 单击“启动”,在“启动测试任务”对话框中选择“资源组类型”和“企业项目”后,单击“启动”,启动测试任务。 图7 启动测试任务 查看测试报告。 测试任务启动成功后,单击“查看报告”,可以查看压测过程中各项指标的监控数据以及图表报告。 压测结束后,系统会生成离线测试结果报告,可下载离线报告,查看已经执行完成的测试任务报告。 父主题: 实施步骤
  • 方案架构 PerfTest-JMeter测试工程,通过集成开源Apache-JMeter实现压力测试,具体工作原理如下: 用户通过性能测试服务测试资源,将自己租户下的CCE节点,纳管到性能测试服务,作为调试节点(一个)和执行节点(至少一个才能发起任务)使用。纳管后,性能测试服务会创建一个 VPC终端节点 ,用于上传测试数据到性能测试服务。性能测试服务通过CCE拉起常驻的调试负载,负载拉起一个容器(即性能测试服务容器),用于调试。 首次使用性能测试服务测试资源,需要用户对性能测试服务进行授权,允许性能测试服务操作CCE和VPC终端节点。 用户使用PerfTest-JMeter测试工程时,需要上传jmx脚本到性能测试服务。这些脚本会存储在性能测试服务的OBS中。性能测试服务拉起容器后,性能测试服务容器会通过OBS下载并执行用户的脚本。 用户在界面上删除jmx脚本时,性能测试服务的OBS中的脚本也会被删除。 用户执行任务时,通过CCE拉起临时的执行负载。负载根据任务规模拉起一个或多个性能测试服务容器,用于执行任务。当采用多个容器执行任务时,线程组中的线程数会平分给每个性能测试服务容器。 性能测试服务执行任务过程中,性能测试服务容器会通过VPC终端节点将测试的结果数据上传到性能测试服务,用于: 统计任务的并发数、时延、RPS、带宽、TP90等性能指标。 显示执行时产生的请求日志、返回日志。 任务结束时,性能测试服务容器会被销毁,只有执行记录会留在用户的执行机中。 性能测试服务容器集成了开源Apache-JMeter、性能测试服务的控制代码以及性能测试服务的部分JMeter增强能力(如多阶段压力配置、日志输出等)。 PerfTest-JMeter工程,默认集成Apache-JMeter 5.4引擎(当前版本),可以通过在性能测试服务测试资源上传自定义安装包,更改为Apache-JMeter 5.3或5.2版本。自定义安装包是从Apache官网下载的zip包。 如果希望PerfTest-JMeter工程能够支持部分第三方插件,可以在PerfTest-JMeter工程处以“第三方jar”的形式,将第三方插件上传。这等效于将jar包放置在JMeter根目录“\lib\ext”下。
  • 实施步骤 登录性能测试服务控制台,在左侧导航栏中选择“PerfTest测试工程”,单击“创建测试工程”。 在弹出的对话框中,输入测试工程的名称,例如“Web-test”,单击“确定”。 单击已创建的测试工程名称“Web-test”,进入测试工程详情页面。在“测试用例”页签,可以看到自动生成的默认目录和样本用例。 在“测试用例”页签中,单击“全局变量”。 添加全局变量。可以直接添加整数、枚举型或文本型全局变量,也可以通过csv格式文件或者xlsx格式文件添加文件型全局变量。 添加整数、枚举型或文本型全局变量 在“全局变量”弹框中单击“添加变量”,输入变量名称,选择变量类型,输入变量值,选择读取模式和共享模式后,单击操作栏的添加变量。例如,添加整数全局变量“number”。 图1 添加整数全局变量 添加文件型全局变量 在“全局变量”弹框中单击“csv模板下载”或者“xlsx模板下载”获取所需的变量文件模板。 按照模板填写相应的变量名称和变量值,如图2,第一行填写变量名称,从第二行开始则填写对应变量的值,“.csv”和“.xlsx”填写规则一样。 图2 文件变量填写示例 变量名称:建议使用中文、英文、数字或下划线,变量的值则不限内容。 导入的文件格式:仅支持UTF-8无BOM格式。 文件名称:文件名称长度上限为50字节(含后缀),文件名称建议使用中文、英文、数字或下划线。 单击“文件变量导入”,上传已填写好的变量文件。 全局变量添加完成后,关闭“全局变量”弹窗。 在测试用例中插入已经添加好的全局变量。例如在3中的样本用例请求信息中,插入已创建的全局变量“number”。 在请求信息输入框内输入“$”。 在插入变量弹框中,选择变量类型为“自定义变量”,变量范围为“全局”,变量名称选择“number”。 图3 插入变量 单击“选择 ”插入变量。 图4 插入变量number 父主题: 全局变量使用全流程
  • 任务创建、调试及启动 返回性能测试服务控制台,在页面上方选择“区域”。 在左侧导航栏选择“总览”,进入“总览”页面。单击“热门模板”中的“一网通办系统场景”,一键创建一网通办系统场景压测工程。 一网通办系统场景完成创建后,会自动进入一网通办系统压测工程的“测试用例”详情页面。 图1 一网通办系统压测工程 选择对应的测试用例,修改相应的参数。例如,整点时间消费券免费领取场景,修改响应的请求信息,修改完成后单击“保存”。 图2 修改参数 单击“调试”,选择对应的测试资源组作为执行器后单击“启动”启动调试。如果调试结果报错,可根据日志信息,修改用例后重新调试。 在“测试任务”页签,单击“创建任务”。 输入测试任务名称,单击“添加用例”,选择需要添加的用例,单击“确定”。单击“保存”,测试任务创建完成。 图3 添加用例 在测试任务操作栏单击“启动”按钮。 图4 启动任务 选择资源组类型后,单击“启动”启动测试任务。
  • 测试资源准备 进入购买性能测试套餐页面。 设置以下信息。 表1 性能测试服务套餐参数说明 参数 说明 服务版本 根据需求选择专业版或者企业版。两者的区别请参见价格计算器。例如,选择“企业版”。 区域 选择“区域”。例如,选择“华北-北京四”。 不同的区域之间套餐包不互通,每个区域需分别购买。 企业项目 该参数针对企业用户使用。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理,默认项目为default。 计费模式 “专业版”只支持“按需套餐包”。 “企业版”支持“按需套餐包”和“包周期套餐包”。 峰值并发 执行压测任务支持的最大并发用户数。例如,选择“5万”。 VUM额度 仅在“计费模式”为“按需套餐包”时,需要设置。 VUM指任务对资源的消耗数,表示每虚拟用户每分钟。计算公式为VUM=VU(虚拟并发用户数)*M(压测时长,单位为分钟)。 有效期 仅在“计费模式”为“按需套餐包”时,涉及该参数。 默认为“一年”。套餐包到期后,未使用的VUM会被清零。 包周期时长 仅在“计费模式”为“包周期套餐包”时,需要设置。 选择需要包周期的时长,可选择:1至9个月,或1年,也可自动续费。 单击“立即购买”,进入订单确认页面。 确认订单无误后,支付订单。 登录性能测试服务控制台,在左侧导航栏中选择“测试资源”,单击“创建私有资源组”。 (可选)首次使用时,请根据提示信息,授权性能测试服务创建私有资源组。 进入创建资源组页面后,如果是首次使用没有云容器引擎服务CCE集群,则需要先创建集群然后再创建资源组。如果已有可用的云容器引擎服务CCE集群,直接创建资源组。 创建集群。 单击页面上方的“创建集群”,进入购买CCE集群页面。创建集群操作请参考购买CCE集群,设置集群参数。 集群管理规模选择与执行节点个数相关,请根据需要压测的并发用户数,创建对应规格的节点。例如,需要20个执行节点,那么创建集群时集群规模选择50节点即可满足业务需求。 CCE集群的网络模型建议选择“容器隧道网络”,容器网段和服务网段需要与被测对象保持一致。 单击“下一步:插件配置”,默认选择即可。 单击“下一步:规格确认”,确认集群配置信息无误后,勾选已阅读使用说明,单击“提交”等待集群创建,集群创建预计需要6-10分钟。 集群创建成功后,返回集群管理页面,单击“创建节点”,进入创建节点页面。创建节点操作请参考创建节点,设置节点参数。 节点规格至少为vCPU为4核,内存8GB。 操作系统需选择欧拉EulerOS。 创建的节点数量至少需要2台(1台调试节点、1台执行节点),具体数量由压测对象要求规格决定。例如,压测10万并发用户数,vCPU为4核,内存8GB的资源需要21个执行节点(1个调试节点,20个执行节点)。 当CCE集群节点与被测应用不在同一VPC网络时,建议CCE集群节点绑定弹性IP。可使用已有的弹性IP,如果没有弹性IP也可以选择自动创建。自动创建弹性IP时,计费方式推荐按流量计费,带宽设置尽可能选择较大值,否则可能影响压测效果。系统根据您的配置创建弹性IP,并自动为每个节点进行分配。当创建的弹性IP数量小于节点个数时,会将弹性IP随机绑定到节点上。 单击“下一步:规格确认”,确认节点配置信息无误后,勾选已阅读使用说明,单击“提交”等待节点创建。节点创建成功后,返回性能测试服务控制台。 创建资源组。 在左侧导航栏中选择“测试资源”,单击“创建私有资源组”。 参照表2设置基本信息。 表2 创建私有资源组 参数 参数说明 资源组名称 新建私有资源组的名称,可自定义。 节点集群 在下拉框选择已创建的CCE集群。 调试节点 选择执行压测的管理机。 调试节点在资源组创建成功后不可修改。 执行节点 选择执行压测的执行机,即在压测过程中能够提供自身性能数据的施压目标机器。 单击“创建”。
  • 调试测试计划 新增或修改测试计划后,可通过调试快速发现语法或配置错误,确保该模型在任务中可用。 登录性能测试服务控制台,在左侧导航栏中选择“JMeter测试工程”。单击待调试测试计划所在工程后的。 在“测试计划”页签中,单击待调试的任务名称,进入“计划详情”页,单击页面上方。 在调试页面中选择已创建的私有资源组作为执行器,单击“启动”,启动调试,此时可以在调试页面看到调试进展。 调试完成后,如果调试结果报错,可根据异常信息,修改用例后重新调试。导入方法请参见管理测试计划中的修改测试计划部分。 单击“查看日志”查看测试计划调试的具体内容。 在“调试记录”页签,查看调试的历史操作记录。
  • 创建测试计划 测试计划是指基于已定义的JMeter文件和依赖的jar包和变量文件发起一次性能测试的活动。 登录性能测试服务控制台,在左侧导航栏中选择“JMeter测试工程”,单击待操作工程后的。 在“测试计划”页签中,单击“创建测试计划”。 在弹出的窗口中单击“添加文件”,选择格式为*.jmx的文件,单击“上传文件”,导入成功后将自动关闭窗口并返回“测试计划”页签,可以看到已添加的测试计划。 jmx文件的名称长度上限为64字节(含后缀),文件大小限制为10M。 当前支持基本的JMeter脚本,包括线程组,HTTP请求,HTTP信息头管理器,请求参数,超时时间,BeanShell等。建议您使用5.2.1以上版本的脚本进行导入,以免出现脚本解析错误。 在“测试计划”页签中,单击“第三方jar包”,在弹出的窗口中单击“添加文件”,选择测试计划所依赖的jar包并导入,导入成功后关闭窗口。 jar包名称长度上限为64字节(含后缀),大小上限专业版为10M,企业版为80M。 在“测试计划”页签中,可以查看新添加的测试计划。
  • 启动测试计划 测试计划指通过在不同压测点执行一系列测试,持续对系统发起压力测试,通过测试获取并分析系统运行的性能数据。 您可以在一个测试工程中添加多个测试计划。 前提条件 确保资源组状态为“运行中”。 确保资源组的调试节点上的32001和32003端口在安全组被开启。 确保资源组的执行节点和被压测的应用之间网络互通。 操作步骤 登录性能测试服务控制台,在左侧导航栏中选择“JMeter测试工程”,单击待操作工程后的。 创建测试计划,具体操作请参见创建测试计划。 创建完成后,单击任务操作栏的。 在“启动测试任务”对话框中,选择对应的资源组。JMeter任务执行所需的资源组类型仅支持“私有资源组”。 单击“启动”,启动测试任务。然后可以单击“查看报告”来查看实时性能报告。 压测时长建议至少300s,并发数请根据被压测应用的实际情况填写。通过多次调整压测数据进行反复测试,得到应用所能承受的最大值,进行持续优化和验证。
  • 压力配置 创建测试计划后,可根据业务需求修改每个阶段的各项参数。 登录性能测试服务控制台,在左侧导航栏中选择“JMeter测试工程”。单击待操作测试计划所在工程后的。 在“测试计划”页签中,单击待压力配置的“任务名称”,进入“计划详情”页,可看到当前线程组下的各个阶段,参照表1设置基本信息。 表1 压力配置 参数 参数说明 执行策略 执行策略目前支持按时长和按次数。 按时长:按照设定的持续时间进行压测。 按次数:按照设定的发送总次数进行压测。 线程数 当前并发操作的虚拟用户数量。 预热时间 对应JMeter脚本里的Ramp-Up字段,指并发用户数从0提升到设置的并发数值所需的时间。 说明: 仅“阶段1”涉及修改该参数。 循环次数 每个虚拟用户执行的次数。 说明: 仅当“执行策略”为“按次数”时涉及修改该参数。 时间控制 用于控制是否配置“最大时长”和“启动延迟”两个参数, 说明: 仅当“执行策略”为“按次数”时涉及该参数。 最大时长 如果实际压测时长达到最大时长时,执行次数尚未达到循环次数,则线程组结束执行。 说明: 仅当“执行策略”为“按次数”时,开启“时间控制”才可修改该参数。 持续时间 任务实际执行的时间,持续时间建议至少300s。 说明: 仅当“执行策略”为“按时长”时,涉及该参数。 启动延迟 虚拟用户在等待设置启动延迟的时间后,再开始执行任务。 说明: 当“执行策略”为“按次数”时,开启“时间控制”可修改该参数。 当“执行策略”为“按时长”时,可以在“阶段1”修改该参数。 单击“确定”保存更新的配置信息。
  • 操作步骤 登录性能测试服务控制台,在左侧导航栏中选择“PerfTest测试工程”。 在待编辑PerfTest测试工程所在行,单击工程名称进入测试工程详情页面。 选择“测试用例”页签中,单击“全局变量”。 您可以通过文件变量导入添加全局变量。 单击“csv模板下载”或者“xlsx模板下载”获取所需的变量文件模板,按照模板填写相应的变量和值。 csv/xlsx格式文件模板第一行表头填写的是变量名,从第二行开始填写的是对应变量的值。 其中,每份文件大小、上传的文件个数上限与当前的套餐相对应,请参考性能测试服务价格计算器查看详情。 变量文件限制如下: 导入的文件格式:.csv(UTF-8无BOM格式)和.xlsx。 文件的名称长度上限:50字节(含后缀)。 文件大小限制: xlsx:专业版10M,企业版20M。 csv :专业版10M ,企业版默认80M。 单击“文件变量导入”,导入格式为csv或xlsx的文件。 变量名称:导入的文件名称。 变量类型:文件。 变量值:实际的变量名称,多个变量名称之间用“,”分隔。 变量读取模式: 顺序模式:顺序读取变量。 随机模式:随机读取变量。 变量共享模式 用例模式:每个并发共享一个变量。 并发模式:每个并发单独复制一个同名变量进行使用,不同并发按顺序读取变量值,互不影响。 全局变量导入成功后,您还可以执行如下操作: 单击“编辑”可以设置变量的读取顺序和变量共享模式。 选择不同的变量读取模式和变量共享模式时变量读取规则可参考变量读取规则。 单击“下载”,将全局变量文件下载到本地。 单击“删除”,删除导入的全局变量文件。 全局变量文件被引用时,不可删除。 已导入的全局变量文件,如果本地做了修改,可单击“重新上传”进行重新上传。
  • 添加分析对象 登录性能测试服务控制台,在左侧导航栏中选择“JMeter测试工程”。 在测试工程列表中,单击待编辑测试工程后的。 在“智能分析”页签下,单击“创建分析对象”。 在弹框中,系统自动键入分析对象名称,也可以手动修改分析对象名称。勾选需要添加的分析对象,分析对象可以是应用组,即应用监控( APM );也可以是节点,即主机监控( AOM )。应用组为应用安装APM探针时填写的监控组名称,节点为安装了AOM探针的虚拟机。 配置完成后,单击“确定”。 您还可以编辑和删除分析对象。 编辑分析对象:在“智能分析”页签中,单击待修改分析对象后的,根据系统提示执行编辑操作。 如果分析对象已被测试计划关联,编辑分析对象参数后,测试计划中关联分析对象的参数也会相应改变。 删除分析对象:在“智能分析”页签下,单击待删除分析对象后的,根据系统提示执行删除操作。 删除分析对象时,如果分析对象已被测试计划使用,则不可删除。
  • 变量值加密 当全局变量类型为Ciphertext(加密类型),需要对变量值进行加密。如果全局变量类型变更为加密类型,需手动更新引用该变量的测试用例后,该加密型变量才能生效。 登录性能测试服务控制台,在左侧导航栏中选择“PerfTest测试工程”。 在待编辑PerfTest测试工程所在行,单击工程名称进入测试工程详情页面。 选择“测试用例”页签,在左侧“用例列表”下选择已创建的测试用例,单击“全局变量”。 新建变量或选择已创建的变量,变量类型选择“Ciphertext”。 单击“加密”,在弹出的加密对话框中,输入需要加密的内容,单击“加密”生成密钥。 图2 变量加密 单击“复制”,出现“已成功复制到粘贴板”的提示后,单击变量值输入框,将生成的密钥粘贴到变量值。 单击“保存”。
  • 复制变量 前提条件:已创建变量。 登录性能测试服务控制台,在左侧导航栏中选择“PerfTest测试工程”。 在待编辑PerfTest测试工程所在行,单击工程名称进入测试工程详情页面。 选择“测试用例”页签,在左侧“用例列表”下选择已创建的测试用例,单击“全局变量”。 可以通过以下两种方式复制变量: 在待复制的变量操作列表中,单击。 在待复制的变量所在行右击,在弹出的列表中单击“复制”。 在操作列表中出现后,单击将变量复制到跟目录。如果变量目录中已创建变量文件夹,在变量文件夹操作列表中会同时出现,单击可将变量复制到该变量文件夹中。 单击“保存”。
  • 复制变量文件夹 前提条件:已创建变量夹。 登录性能测试服务控制台,在左侧导航栏中选择“PerfTest测试工程”。 在待编辑PerfTest测试工程所在行,单击工程名称进入测试工程详情页面。 选择“测试用例”页签,在左侧“用例列表”下选择已创建的测试用例,单击“全局变量”。 可以通过以下两种方式复制变量文件夹: 在待复制的变量文件夹操作列表中,单击。 在待复制的变量文件夹所在行右击,在弹出的列表中单击“复制”。 在操作列表中出现后,单击将变量文件夹复制到该文件夹中;单击将变量文件夹复制到跟目录中。 单击“保存”。
  • 操作步骤 登录性能测试服务控制台,在左侧导航栏中选择“PerfTest测试工程”。 在待添加分析对象的PerfTest测试工程所在行,单击工程名称进入测试工程详情页面。 在“智能分析”页签中,单击“创建分析对象”。 在弹框中,系统自动键入分析对象名称,也可以手动修改分析对象名称。勾选需要添加的分析对象,分析对象可以是应用组,即应用监控(APM);也可以是节点,即主机监控(AOM)。应用组为应用安装APM探针时填写的监控组名称,节点为安装了AOM探针的虚拟机。 配置完成后,单击“确定”。 您还可以编辑和删除分析对象。 编辑分析对象:在“智能分析”页签中,单击待修改分析对象后的,根据系统提示执行编辑操作。 如果分析对象已被测试任务关联,编辑分析对象参数后,测试任务中关联分析对象的参数也会相应改变。 删除分析对象:在“智能分析”页签中,单击待删除分析对象后的,根据系统提示执行删除操作。 删除分析对象时,如果分析对象已被测试任务使用,则不可删除。
  • 头域说明 表1 头域说明 协议头字段名 说明 Accept 能够接受的回应内容类型(Content-Types)。 Accept-Charset 能够接受的字符集。 Accept-Datetime 能够接受的按照时间来表示的版本。 Accept-Encoding 能够接受的编码方式列表。 Accept-Language 能够接受的回应内容的自然语言列表。 Authorization 用于超文本传输协议认证的认证信息。 Cache-Control 用来指定在这次的请求/响应链中的所有缓存机制都必须遵守的指令。 Connection 该浏览器想要优先使用的连接类型。 Content-Length 以八位字节数组(8位的字节)表示的请求体的长度。 Content-MD5 请求体的内容的二进制MD5散列值,以 Base64 编码的结果。 Content-Type 请求体的多媒体类型 (用于POST和PUT请求中)。 Cookie 之前由服务器通过 Set- Cookie 发送的一个超文本传输协议Cookie。 Date 发送该消息的日期和时间。 DNT 请求某个网页应用程序停止跟踪某个用户。在火狐浏览器中,相当于X-Do-Not-Track协议头字段(自 Firefox/4.0 Beta 11 版开始支持)。Safari和Internet Explorer 9 也支持这个字段。 Expect 表明客户端要求服务器做出特定的行为。 Front-End-Https 被微软的服务器和负载均衡器所使用的非标准头部字段。 From 发起此请求的用户的邮件地址。 Host 服务器的 域名 (用于 虚拟主机 ),以及服务器所监听的传输控制协议端口号。如果所请求的端口是对应的服务的标准端口,则端口号可被省略。 自超文件传输协议版本1.1(HTTP/1.1)开始便是必需字段,在本服务中如果URL中填写的域名为IP地址会自动添加该字段,否则请将被测应用的IP与端口信息填写在该字段。 If-Match 仅当客户端提供的实体与服务器上对应的实体相匹配时,才进行对应的操作。主要作用是,用作像 PUT 这样的方法中,仅当从用户上次更新某个资源以来,该资源未被修改的情况下,才更新该资源。 If-Modified-Since 允许在对应的内容未被修改的情况下返回304未修改( 304 Not Modified )。 If-None-Match 允许在对应的内容未被修改的情况下返回304未修改( 304 Not Modified ),参考超文本传输协议的实体标记。 在典型用法中,当一个URL被请求,Web服务器会返回资源和其相应的ETag值,它会被放置在HTTP的“ETag”字段中,然后,客户端可以决定是否缓存这个资源和它的ETag。以后,如果客户端想再次请求相同的URL,将会发送一个包含已保存的ETag和“If-None-Match”字段的请求。 If-Range 如果该实体未被修改过,则向发送方发送其所缺少的那一个或多个部分;否则,发送整个新的实体。 If-Unmodified-Since 仅当该实体自某个特定时间以来未被修改的情况下,才发送回应。 Max-Forwards 限制该消息可被代理及网关转发的次数。 Origin 发起一个针对跨来源资源共享的请求(要求服务器在回应中加入一个‘访问控制-允许来源’('Access-Control-Allow-Origin')字段)。 Pragma 与具体的实现相关,这些字段可能在请求/回应链中的任何时候产生多种效果。 Proxy-Authorization 用来向代理进行认证的认证信息。 Proxy-Connection 该字段源于早期超文本传输协议版本实现中的错误。与标准的连接(Connection)字段的功能完全相同。 Proxy-Password 代理密码。 Proxy-Server 代理服务。 Proxy-Username 代理用户名。 Range 仅请求某个实体的一部分。字节偏移以0开始。 Referer 表示浏览器所访问的前一个页面,正是那个页面上的某个链接将浏览器带到了当前所请求的这个页面。 TE 浏览器预期接受的传输编码方式:可使用回应协议头 Transfer-Encoding 字段中的值;另外还可用“trailers”(与“分块”传输方式相关)这个值来表明浏览器希望在最后一个尺寸为0的块之后还接收到一些额外的字段。 Upgrade 要求服务器升级到另一个协议。 User-Agent 浏览器的浏览器身份标识字符串。 Via 向服务器告知,这个请求是由哪些代理发出的。 Warning 一个一般性的警告,告知,在实体内容体中可能存在错误。 X-Wap-Profile 链接到互联网上的一个XML文件,其完整、仔细地描述了正在连接的设备。 X-Requested-With 主要用于标识Ajax及可扩展标记语言请求。大部分的JavaScript框架会发送这个字段,且将其值设置为XMLHttpRequest。 X-Http-Method-Override 请求某个网页应用程序使用该协议头字段中指定的方法(一般是PUT或DELETE)来覆盖掉在请求中所指定的方法(一般是POST)。当某个浏览器或防火墙阻止直接发送PUT 或DELETE 方法时(注意,这可能是因为软件中的某个漏洞,因而需要修复,也可能是因为某个配置选项就是如此要求的,因而不应当设法绕过),可使用这种方式。 X-Forwarded-Proto 一个事实标准,用于标识某个超文本传输协议请求最初所使用的协议。 X-Forwarded-Host 一个事实标准,用于识别客户端最初发出的Host请求头部。 X-Forwarded-For 一个事实标准,用于标识某个通过超文本传输协议代理或负载均衡连接到某个网页服务器的客户端的原始互联网地址。 X-Csrf-Token 用于防止跨站请求伪造 辅助用的头部有X- CS RFToken或X-XSRF-TOKEN X-ATT-DeviceId 使服务器更容易解读AT&T设备User-Agent字段中常见的设备型号、固件信息。 父主题: 参考知识
  • 入门实践 当您完成了环境资源准备、创建测试工程、创建测试用例、创建测试任务等基本操作后,可以根据自身的业务需求使用性能测试服务提供的常用实践。 表1 常用最佳实践 实践 描述 城市政务一网通办系统性能测试 类似“一网通办”等跟国计民生相关的系统,由于突然的访问量暴增导致系统响应慢,为避免流量高峰期使用出现系统崩溃,性能测试服务通过模拟相关实际场景,快速构造压力模型,发现不同压力模型下服务的性能瓶颈,避免宕机。 JMeter测试工程原生性能压测 PerfTest-JMeter测试工程旨在为用户提供JMeter原生引擎的支持,用户可在PerfTest-JMeter测试工程里导入JMeter脚本,使用JMeter原生引擎快速发起高并发的性能测试,可查看完备的性能测试报告。 全局变量使用全流程 全局变量用于构造数据集合,使测试数据更加丰富。在报文事务请求信息的报文内容中引用全局变量,执行压测任务过程会将报文内容中的变量值动态替换为指定的值。
  • 操作场景 性能测试服务提供体验馆功能,通过体验向导,帮助您快速熟悉性能测试服务的使用流程。 体验馆主要提供以下四个体验向导: 测试服务使用全流程:帮助您熟悉性能测试服务的基本操作,体验如何部署测试工程、测试任务到生成测试报告的一站式服务。 变量调试:帮助您熟悉全局变量和局部变量的添加过程,快速完成压测模型定义,并通过调试功能判断配置是否正确。 电商解决方案:支持大规模并发、多事务组合全链路压测,帮助您快速压测电商网站,解决应用崩溃、扩容等疑难问题。 一网通办系统模板:一网通办系统模型,是在各城市都上线“一网通办”的背景下,专门打造的模型压测样板。具有上手简单、场景拟真、压力配置丰富等特点。
  • 操作步骤 登录性能测试服务控制台,选择左侧导航栏的“PerfTest测试工程”。 在PerfTest测试工程所在行,单击测试工程名称,例如前面创建的测试工程“Web-test”,进入测试工程详情页面。 在“测试任务”页签,选择测试任务,如前面创建的测试任务“taskA”,单击操作栏的。 选择企业项目和资源组类型,单击“启动”,启动测试任务。 任务启动后,单击“查看报告”会自动跳转到实时报告页面。 您也可以在压测任务结束后,单击测试任务“taskA”的操作栏的,查看离线报告页面。 在测试报告总览页面单击右上角的“下载报告”,获得PDF版本,联系专家进行分析,分析出当前系统的性能瓶颈以及改进建议。
  • 操作步骤 登录性能测试服务控制台,选择左侧导航栏的“PerfTest测试工程”。 在PerfTest测试工程所在行,单击测试工程名称,例如前面创建的测试工程“Web-test”,进入测试工程详情页面。 选择“测试任务”页签,单击“创建任务”。 输入任务名称,例如“taskA”,选择执行方式。 执行方式分为串行和并行: 串行:每个测试任务下的用例按顺序串行执行。 并行:每个测试任务下的用例并行执行。 单击“添加用例”,在弹出的对话框中选择已创建好用例,单击“确定”。 配置完成后,单击“保存”。
  • 基本概念 测试工程:测试工程分为“PerfTest测试工程”和“JMeter测试工程”。PerfTest测试工程指性能测试服务为用户的测试工程提供管理能力,事务、压测任务、测试报告的内容在同一个测试工程内共享复用,您可以为不同的测试项目创建不同的测试工程。JMeter测试工程指用户在性能测试服务中导入JMeter脚本的测试工程。 事务:事务是指用户自定义的操作模型,包括HTTP/HTTPS/TCP/UDP/WEBSOCKET报文、思考时间、响应提取和检查点,以及HLS/RTMP/HTTP-FLV/MQTT报文部分。 报文:报文是HTTP等应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文都是在客户端、服务器和代理之间流动。 思考时间:为了更好的模拟用户的行为,需要模拟用户在不同操作之间等待的时间,例如,当用户收到来自服务器的数据时,可能要等待几秒查看数据,然后再做出响应,这种延迟,就称为思考时间 响应提取:如果同一事务中存在多个报文,通过正则表达式或JSON提取把前一个报文的输出提取出来,作后一个报文的输入。 检查点:检查点主要是通过自定义校验信息来验证服务端的返回内容是否正确。 并发用户数:并发用户数指在同一时刻内,对系统进行业务操作的用户数量,在性能测试服务中指用户在定义测试任务阶段设置的虚拟用户数。 响应时间:响应时间指从客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结果结束所经历的时间。
  • 游戏高峰测试 游戏行业业务波峰波谷明显,具备弹性伸缩的能力,一方面需要验证弹性伸缩是否可以正常工作,另一方面需要验证在流量突发高峰场景下,时延等关键KPI是否达标。 优势 多场景组合模拟:通过多事务组合、事务元素多样性、报文自定义功能模拟真实场景。 波峰波谷模拟:针对每个单事务根据时间段定义压测曲线,模拟波峰波谷。 KPI度量:通过自定义响应超时时间,验证高峰场景游戏KPI满足度。 图2 游戏高峰测试
  • 应用性能调优 定义性能测试模型,通过性能测试服务的执行机给被测应用发送模拟流量,利用服务报告查看被测应用的资源监控、调用链情况,了解应用对事物的并发处理能力,方便进行性能优化。 优势: 灵活扩展:执行机集群按需扩展,支持不同规模的性能测试。 一站式解决方案:通过专业的报告提供应用并发能力、响应时延、应用CPU/内存占用、应用的内部各微服务处理时延等关键指标。 按需收费:根据性能测试持续时间、并发规模进行收费。
  • 复杂场景支持 生产环境往往是复杂多变的,如一个用户访问可能包含多个请求,不同的用户在进行不同的事务操作,用户访问呈现明显的波峰波谷,瞬时并发用户多等状况,因此需要对服务开展性能测试,提前识别性能瓶颈。 优势 模型灵活定制:支持多事务组合测试,可模拟多用户多个操作的组合场景。 突发流量支持:支持针对每个事务指定时间段定义并发用户数,模拟突发业务流量。 结果校验:支持多种表达式的自定义结果比对,定制您的事务成功标准。 图3 复杂场景支持
  • 电商抢购测试 电商抢购已成为当前互联网应用的普遍需求,有并发用户高、突发请求大、失败用户反复重试等特征,如何保证在高负载运行情况下网站的可用性已经成为运维保障的重点。 优势 真实场景模拟:秒级千万并发能力,瞬间发起大量并发压力,可在一个测试模型里面模拟全网站高负载。 专业测试报告:提供按时延响应区间的统计,客观反映用户体验。 失败用户重试:多种表达式的自定义结果比对,未正常进入网站的可以重试。 图1 电商抢购测试
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、虚拟主机和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 性能测试服务权限 默认情况下,新建的 IAM 用户没有任何权限,您需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 性能测试服务部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京4)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问性能测试服务时,需要先切换至授权区域。 权限根据授权精细程度分为角色和策略,策略是角色的升级版。当前性能测试服务仅支持通过系统角色授权。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于各云服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对ECS服务,管理员能够控制IAM用户仅能对某一类云服务器资源进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分。 如表1所示,包括了性能测试服务的所有系统权限。 表1 性能测试服务系统权限 系统角色/策略名称 描述 类别 依赖关系 CodeArts PerfTest Administrator 拥有该权限的用户对当前租户及所有子用户的CodeArts PerfTest资源和测试资源具有完全的操作权限(如增删改查)。 系统角色 如果是需要创建、修改或删除私有资源组的用户,还依赖CCE Administrator和VPCEndpoint Administrator权限。 如果是仅使用共享资源组执行的用户,则不依赖其他权限。 CodeArts PerfTest Developer 拥有该权限的用户只对本用户的CodeArts PerfTest资源和测试资源具有完全的操作权限(如增删改查)。 系统角色 如果是需要创建、修改或删除私有资源组的用户,还依赖CCE Administrator和VPCEndpoint Administrator权限。 如果是仅使用共享资源组执行的用户,则不依赖其他权限。 CodeArts PerfTest Operator 拥有该权限的用户只对本用户的CodeArts PerfTest资源和测试资源具有可读权限。 系统角色 无。 CodeArts PerfTest Resource Administrator 性能测试服务测试资源管理员,拥有该服务下测试资源相关的所有权限。 系统角色 需要搭配CodeArts PerfTest Developer使用,可以使CodeArts PerfTest Developer角色拥有私有资源组的管理员权限,可以增删改查该账号下所有的私有资源组。 CodeArts PerfTest Resource Developer 性能测试服务测试资源开发者,拥有该服务下测试资源查看和使用权限,但无基础设施创建、更新、删除权限。 系统角色 需要搭配CodeArts PerfTest Developer使用,可以使CodeArts PerfTest Developer角色拥有私有资源组的使用权限,可以查看并使用该账号下所有的私有资源组。 首次创建测试资源,需父账号授权,自动创建委托使性能测试服务可以操作用户CCE。 需要使用性能测试服务的用户,需要CodeArts PerfTest Administrator或CodeArts PerfTest Developer权限(仅能查看自己创建的工程)。 需要管理私有资源组的用户,需要CodeArts PerfTest Administrator或CodeArts PerfTest Developer+CodeArts PerfTest Resource Administrator权限。 需要使用私有资源组的用户,需要CodeArts PerfTest Administrator或CodeArts PerfTest Developer+CodeArts PerfTest Resource Developer权限。 使用性能测试服务依赖的权限及具体使用场景,详见使用性能测试服务需要哪些权限。
  • 应用场景 Flume是一个分布式、可靠和高可用的海量日志聚合的系统。它能够将不同数据源的海量日志数据进行高效收集、聚合、移动,最后存储到一个中心化数据存储系统中。支持在系统中定制各类数据发送方,用于收集数据。同时,提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。 Flume分为客户端和服务端,两者都是FlumeAgent。服务端对应着FlumeServer实例,直接部署在集群内部。而客户端部署更灵活,可以部署在集群内部,也可以部署在集群外。它们之间没有必然联系,都可以独立工作,并且提供的功能是一样的。 Flume客户端需要单独安装,支持将数据直接导到集群中的HDFS和Kafka等组件上。 本案例中,通过 MRS 自定义集群中的Flume组件,自动采集指定节点日志目录下新产生的文件并存储到HDFS文件系统中。
  • 步骤1:创建MRS集群 创建并购买一个包含有Flume、HDFS组件的MRS集群,详情请参见购买自定义集群。 本文以购买的MRS 3.1.0版本的集群为例,集群未开启Kerberos认证。 集群购买成功后,登录集群的 FusionInsight Manager界面,下载集群客户端并解压。 由于Flume客户端需要单独安装,需要首先下载集群的客户端安装包到待安装Flume客户端的节点上并解压。 在FusionInsight Manager“主页”页签的集群名称后单击,单击“下载客户端”下载集群客户端。 在“下载集群客户端”弹窗中填写集群客户端下载信息。 图3 下载集群客户端 “选择客户端类型”中选择“完整客户端”。 “选择平台类型”必须与待安装节点的架构匹配,以“x86_64”为例。 勾选“仅保存到如下路径”,填写下载路径,本示例以“/tmp/FusionInsight-Client/”为例,需确保omm用户对该路径有操作权限。 客户端软件包下载完成后,以root用户登录集群的主 OMS 节点,复制安装包到指定节点。 客户端软件包默认下载至集群的主OMS节点(可通过FusionInsight Manager的“主机”界面查看带有标识的节点),如需要在集群内其他节点上安装,执行以下命令将软件包传输至其他节点,否则本步骤可忽略。 cd /tmp/FusionInsight-Client/ scp -p FusionInsight_Cluster_1_Services_Client.tar 待安装Flume客户端节点的IP地址:/tmp 以root用户登录待安装Flume客户端的节点,进入客户端软件包所在目录后,执行以下命令解压软件包。 tar -xvf FusionInsight_Cluster_1_Services_Client.tar tar -xvf FusionInsight_Cluster_1_Services_ClientConfig.tar
  • 方案架构 Flume-NG由多个Agent来组成,而每个Agent由Source、Channel、Sink三个模块组成,其中Source负责接收数据,Channel负责数据的传输,Sink则负责数据向下一端的发送。 图1 Flume-NG架构 表1 模块说明 名称 说明 Source Source负责接收数据或通过特殊机制产生数据,并将数据批量放到一个或多个Channel。Source的类型有数据驱动和轮询两种。 典型的Source类型如下: 和系统集成的Sources:Syslog、Netcat。 自动生成事件的Sources:Exec、SEQ。 用于Agent和Agent之间通信的IPC Sources:Avro。 Source必须至少和一个Channel关联。 Channel Channel位于Source和Sink之间,用于缓存来自Source的数据,当Sink成功将数据发送到下一跳的Channel或最终目的地时,数据从Channel移除。 Channel提供的持久化水平与Channel的类型相关,有以下三类: Memory Channel:非持久化。 File Channel:基于WAL(预写式日志Write-Ahead Logging)的持久化实现。 JDBC Channel:基于嵌入Database的持久化实现。 Channel支持事务,可提供较弱的顺序保证,可以和任何数量的Source和Sink工作。 Sink Sink负责将数据传输到下一跳或最终目的,成功完成后将数据从Channel移除。 典型的Sink类型如下: 存储数据到最终目的终端Sink,比如:HDFS、HBase。 自动消耗的Sink,比如:Null Sink。 用于Agent间通信的IPC sink:Avro。 Sink必须作用于一个确切的Channel。 Flume也可以配置成多个Source、Channel、Sink,如图2所示: 图2 Flume结构图
共100000条