23
H3C CAS JMeter 性能测试操作指导书 Copyright © 2015 杭州华三通信技术有限公司 版权所有,保留一切权利。 非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部, 并不得以任何形式传播。本文档中的信息可能变动,恕不另行通知。

H3C CAS JMeter 性能测试操作指导书

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: H3C CAS JMeter 性能测试操作指导书

H3C CAS JMeter 性能测试操作指导书

Copyright © 2015 杭州华三通信技术有限公司 版权所有,保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,

并不得以任何形式传播。本文档中的信息可能变动,恕不另行通知。

Page 2: H3C CAS JMeter 性能测试操作指导书

i

目 录

1 简介 ······························································································································· 1

2 配置前提 ························································································································· 1

3 配置环境 ························································································································· 1

3.1 服务器························································································································· 1

3.2 软件 ··························································································································· 1

4 组网需求 ························································································································· 2

5 测试步骤 ························································································································· 2

5.1 准备测试环境 ················································································································ 2

5.1.1 准备测试虚拟机 ···································································································· 2

5.1.2 准备测试工具运行环境 ··························································································· 4

5.1.3 准备 JMeter 测试工具 ···························································································· 6

5.1.4 准备 Web 服务器 ·································································································· 6

5.2 配置性能加压工具 ·········································································································· 8

5.3 测试不同并发用户时的性能 ···························································································· 12

5.3.1 10000 并发用户 ·································································································· 12

5.3.2 20000 并发用户 ·································································································· 13

5.3.3 30000 并发用户 ·································································································· 14

5.3.4 50000 并发用户 ·································································································· 16

6 经验总结 ······················································································································· 17

6.1 JMeter 和 Tomcat 服务内存配置 ······················································································ 17

6.2 虚拟机内存/vCPU 数量对并发性能的影响·········································································· 18

Page 3: H3C CAS JMeter 性能测试操作指导书

1

1 简介

本文档用于介绍 H3C CAS 云计算管理平台下使用 JMeter 工具测试性能的使用方法和操作步骤。

JMeter 是 Apache 组织开发的基于 Java 的压力测试工具,最早是为了测试 Tomcat 的前身 JServ 的

执行效率而开发的,目前最新版本是 2.13,其测试能力也不再局限于对 Web 服务器的测试,而是

涵盖数据库、JMS、Web Service、LDAP 等多种对象的测试能力。使用 JMeter 测试工具,可以模

拟大量负载来测试应用系统的健壮性及分析不同负载下的整体性能。

2 配置前提

本文档中的配置均是在实验室环境下进行的配置和验证,配置前服务器和软件的所有参数均采用出

厂时的缺省配置。如果您已经对被测试对象进行了配置,为了保证配置效果,请确认现有配置和以

下举例中的配置不冲突。

3 配置环境

3.1 服务器

本文档不严格与具体硬件服务器型号对应,如果使用过程中与产品实际情况有差异,请参考相关产

品手册,或以设备实际情况为准。本文档使用的服务器型号与配置如下表所示,该环境不作为实际

部署时的强制环境或推荐环境,只需要服务器能够兼容 H3C CAS 云计算管理平台即可完成本配置。

配置项 说明

服务器 #1

(H3C CAS CVM虚拟化管理平台)

H3C FlexServer B390

CPU:2 路 6 核,Intel Xeon E5-2620 0 @ 2.00GHz

内存:32 GB

服务器 #2

(H3C CAS CVK虚拟化内核系统)

HP ProLiant BL460c G7

CPU:2 路 6 核,Intel Xeon X5675 @ 3.07GHz

内存:96 GB

3.2 软件

软件 版本

服务器虚拟化管理软件 H3C CAS-E0218(KVM Kernel 3.13.6)

Java SDK

Java SE Development Kit 8u66 Windows 64位版本,下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Web服务器 Tomcat 8.0.29 Windows 64位版本,下载地址:

http://tomcat.apache.org/download-80.cgi

性能测试工具 JMeter 2.13 R1665067 Windows 64位版本,下载地址:

http://jmeter.apache.org/download_jmeter.cgi

Page 4: H3C CAS JMeter 性能测试操作指导书

2

4 组网需求

服务器 #2

H3C CAS CVK虚拟化内核系统(E0218)

H3C FlexServer B390

服务器 #1

H3C CAS CVM虚拟化管理平台(E0218)

H3C FlexServer B390

VM

JMeter 2.13 & Tomcat 8.0.29

Windows Server 2008 R2数据中心版64位

192.168.0.202 192.168.0.201

192.168.0.129

图1 使用 JMeter 进行性能测试逻辑组网图

组网说明:

(1) 服务器 #1 和服务器 #2 分别安装 H3C CAS CVM 虚拟化管理平台与 H3C CAS CVK 虚拟化内

核系统,后端没有挂载共享存储设备,使用服务器 #2 本地磁盘承载虚拟机数据。

(2) 在服务器 #2 上创建新的虚拟机,安装 Windows Server 2008 R2 数据中心版 64 位操作系统、

Tomcat 服务器和 JMeter 性能测试工具。

主要的验证项包括:

(1) 在 VM 上使用 JMeter 性能测试工具分别模拟 1 万、2 万、3 万和 5 万用户并发访问虚拟机,

观察和记录并发用户访问情况下的 HTTP 请求与响应时间以及吞吐量。

(2) 尝试不同虚拟机资源(vCPU 和内存)配置情况下的并发用户访问性能差异。

5 测试步骤

5.1 准备测试环境

5.1.1 准备测试虚拟机

步骤1 创建虚拟机。

# 系统管理员登录 H3C CAS CVM 虚拟化管理平台,在服务器 #2 上创建一个新的虚拟机,虚拟机

硬件资源配置如下表所示。

资源 大小

vCPU 2核

vMem 8GB

Page 5: H3C CAS JMeter 性能测试操作指导书

3

vDisk 1 * 50GB(Virtio),位于服务器本地磁盘。

vNIC 1(Virtio),开启内核加速

上述虚拟机资源配置仅为测试环境下的配置,不作为生产环境中业务虚拟机的推荐配置。生产

环境中的虚拟机配置应该根据业务本身对 CPU、内存、磁盘和网卡等资源的实际需求进行评估

和测试后最终确定。

步骤2 安装虚拟机操作系统。

# 通过控制台(VNC)为虚拟机安装 Windows Server 2008 R2 数据中心版 64 位操作系统。

步骤3 安装 CAStools 工具。

# 在 H3C CAS CVM 虚拟化管理平台中,在线修改虚拟机,为虚拟机挂载 CAStools 工具,并在操

作系统内安装 CAStools 工具。

图2 在虚拟机光驱中挂载 CAStools 工具

Page 6: H3C CAS JMeter 性能测试操作指导书

4

5.1.2 准备测试工具运行环境

步骤1 下载和安装 JDK 运行环境。

JMeter 的运行环境需要与 JVM6 或更高版本兼容。

# 从 Oracle 官网下载 JDK,本文档使用 Windows 64 位环境下的 JDK 8 Update 66,下载地址为:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。

# 将下载后的 JDK 包拷贝到虚拟机操作系统内,并安装。

步骤2 设置 Java 环境变量。

# 在虚拟机操作系统内,鼠标依次点击“我的电脑”->“属性”->“高级”->“环境变量”。

# 在“系统变量”属性框中,点击<新建>按钮,在弹出的“新建系统变量”对话框中,输入“变量

名”为“JAVA_HOME”,“变量值”为 JDK 安装路径,例如:“C:\Program Files\Java\jdk1.8.0_66\”,

点击<确定>按钮。

图3 设置 Java 环境变量:Java 安装路径

# 编辑系统变量“Path”,在“变量值”的最前面加上:“%JAVA_HOME%\bin;”,点击<确定>按钮。

Page 7: H3C CAS JMeter 性能测试操作指导书

5

图4 编辑系统变量

# 新建系统变量“CLASSPATH”,变量值为“%JAVA_HOME%\lib”,使 Java 自动从目录中发现 jar

文件类。

图5 设置 Java 环境变量:设置 jar 文件类路径

Page 8: H3C CAS JMeter 性能测试操作指导书

6

5.1.3 准备 JMeter 测试工具

步骤1 下载和安装 JMeter 测试工具。

# 登录 Apache JMeter 官网,下载 JMeter 测试工具,本文档使用 JMeter 2.13 版本,下载地址为:

http://jmeter.apache.org/download_jmeter.cgi

# 将下载后的 JMeter 压缩包拷贝到虚拟机操作系统内,并解压缩到任意磁盘路径下,例如:

“C:\jmeter\”。

5.1.4 准备 Web 服务器

JMeter 的加压对象是一个 Web 服务器,本文档使用 Tomcat 构建 Web 服务器。

步骤1 安装 Tomcat 服务。

# 登录 Apache Tomcat 官网,下载 Tomcat 软件,本文档使用 Tomcat 8.0.29 版本,下载地址为:

http://tomcat.apache.org/download-80.cgi

# 将下载后的 Tomcat 压缩包拷贝到虚拟机操作系统内,并解压缩到任意磁盘路径下,例如:

“C:\tomcat\”。

步骤2 设置 Tomcat 服务环境变量。

# 在虚拟机操作系统内,鼠标依次点击“我的电脑”->“属性”->“高级”->“环境变量”。

# 在“系统变量”属性框中,点击<新建>按钮,在弹出的“新建系统变量”对话框中,输入“变量

名 ” 为 “CATALINA_HOME”,“ 变 量 值 ” 为 Tomcat 安 装 路 径 , 例 如 :

“C:\tomcat\apache-tomcat-8.0.29”,点击<确定>按钮。

图6 设置 Tomcat 环境变量:Tomcat 安装路径

Page 9: H3C CAS JMeter 性能测试操作指导书

7

# 编辑系统变量“Path”,添加变量值:“%CATALINA_HOME%\lib;%CATALINA_HOME%\bin;”,

点击<确定>按钮。

图7 编辑系统变量

# 在“资源管理器”中,定位到目录“C:\tomcat\apache-tomcat-8.0.29\bin\”目录,右键单击

“startup.bat”文件,选择“以管理员身份运行 (A)”。

图8 启动 Tomcat 服务

Page 10: H3C CAS JMeter 性能测试操作指导书

8

# 当弹出的命令行窗口显示如下图所示时,表示 Tomcat 服务已经正常启动。

图9 Tomcat 服务后台执行日志

# 服务安装成功之后,使用浏览器访问“http://localhost:8080/”可以看到 Tomcat 的欢迎界面。

图10 安装成功之后的 Tomcat Web 服务

5.2 配置性能加压工具

步骤1 启动 JMeter 测试工具

Page 11: H3C CAS JMeter 性能测试操作指导书

9

# 进入 JMeter 所在的文件路径,例如:“C:\jmeter\apache-jmeter-2.13\”,在“bin”目录下找到

“jmeter.bat”文件,点击鼠标右键,选择“以管理员身份运行(A)”。

图11 运行 JMeter 工具

步骤2 建立线程组。

# 在 JMeter GUI 界面上,右键单击“测试计划”,依次选择“添加”->“Threads (Users)”->“线

程组”。

图12 建立线程组

Page 12: H3C CAS JMeter 性能测试操作指导书

10

# 配置线程属性,设置“线程数”为 10000,表示并发请求用户数为 1 万,“Ramp-Up Period (in

seconds)”为 60,表示 1 万个用户在 60 秒内完成并发请求,平均 1 秒完成 167 个用户的并发请求,

“循环次数”设置为 1。

图13 设置线程组

步骤3 设置 HTTP 请求。

# 右键单击“线程组”,依次选择“添加”->“Sampler”->“HTTP 请求”。

图14 设置 HTTP 请求

# 分别设置“Web 服务器”属性框的“服务器名称或 IP”和“端口号”为“localhost”和“8080”,

表示对本机 Tomcat 服务首界面链接进行压力访问。

Page 13: H3C CAS JMeter 性能测试操作指导书

11

图15 设置 HTTP 请求

步骤4 设置输出报告类型。

# 右键单击“HTTP 请求”,依次选择“添加”->“监听器”->“Aggregate Graph”,表示测试结果

以聚合报告的形式输出。

图16 设置性能输出报告类型

Page 14: H3C CAS JMeter 性能测试操作指导书

12

5.3 测试不同并发用户时的性能

5.3.1 10000 并发用户

步骤1 启动压力测试。

# 因为在“配置性能加压工具”一节中,我们已经设置了线程数为“10000”,因此,直接在 JMeter

GUI 主界面中工具栏中点击“ ”图标,即可开始并发 10000 用户的压力测试。

步骤2 观察与记录测试结果。

# 加压结束之后,在 JMeter GUI 聚合报告视图中,可以看到此次加压测试的统计结果。

图17 10000 用户并发访问的测试结果

指标项 含义

#Samples 测试过程中发出的请求数,如果模拟10000个用户,每个用户迭代1次,此处就

显示10000。

Average(值越小越好) 平均响应时间。默认情况下是单个Request的平均响应时间,当使用了

Transaction Controller时,则是以Transaction为单位显示平均响应时间。

Median(值越小越好) 中位数,即50%用户的请求响应时间。

90% Line(值越小越好) 90%用户的请求响应时间。

95% Line(值越小越好) 95%用户的请求响应时间。

99% Line(值越小越好) 99%用户的请求响应时间。

Page 15: H3C CAS JMeter 性能测试操作指导书

13

Min(值越小越好) 最小响应时间。

Max(值越小越好) 最大响应时间

Error%(值越小越好) 此次测试中出现错误的请求的数量与请求总量的比例。

Throughput(值越大越好) 吞吐量。默认情况下表示每秒完成的请求数,当使用了Transaction Controller

时,则表示类似LoadRunner的Transaction per Second。

KB/Sec(值越大越好) 每秒从服务器端接收到的数据量,相当于LoadRunner的Throughput/Sec。

步骤3 对比加压前后虚拟机的 CPU 与内存利用率。

CPU(%) 内存(%)

加压前 0.5% 8%

加压后 50%~80% 25%~30%

5.3.2 20000 并发用户

步骤1 配置线程属性。

# 在 JMeter GUI 界面上修改线程属性,设置“线程数”为 20000,表示并发请求用户数为 2 万,

“Ramp-Up Period (in seconds)”为 200,表示 2 万个用户在 120 秒内完成并发请求,平均 1 秒完

成 167 个用户的并发请求,“循环次数”设置为 1。

图18 并发 20000 用户线程属性配置

步骤2 观察与记录测试结果。

Page 16: H3C CAS JMeter 性能测试操作指导书

14

# 加压结束之后,在 JMeter GUI 聚合报告视图中,可以看到此次加压测试的统计结果。

图19 20000 用户并发访问的测试结果

步骤3 对比加压前后虚拟机的 CPU 与内存利用率。

CPU(%) 内存(%)

加压前 0.5% 8%

加压后 50% 80%

5.3.3 30000 并发用户

步骤1 配置线程属性。

# 在 JMeter GUI 界面上修改线程属性,设置“线程数”为 30000,表示并发请求用户数为 3 万,

“Ramp-Up Period (in seconds)”为 300,表示 3 万个用户在 300 秒内完成并发请求,平均 1 秒完

成 167 个用户的并发请求,“循环次数”设置为 1。

Page 17: H3C CAS JMeter 性能测试操作指导书

15

图20 并发 30000 用户线程属性配置

步骤2 观察与记录测试结果。

# 加压结束之后,在 JMeter GUI 聚合报告视图中,可以看到此次加压测试的统计结果,从聚合报告

可以看出,有大约 0.16%(约 4800 个用户)的 HTTP 请求失败。

图21 30000 用户并发访问的测试结果

Page 18: H3C CAS JMeter 性能测试操作指导书

16

步骤3 对比加压前后虚拟机的 CPU 与内存利用率。从内存占用情况看,内存峰值达到 100%,要

使 30000 个用户请求全部成功,可能需要添加虚拟机的内存。

CPU(%) 内存(%)

加压前 0.5% 15%

加压后 50%左右振荡 85%~100%

5.3.4 50000 并发用户

步骤1 配置线程属性。

# 在 JMeter GUI 界面上修改线程属性,设置“线程数”为 50000,表示并发请求用户数为 5 万,

“Ramp-Up Period (in seconds)”为 500,表示 5 万个用户在 500 秒内完成并发请求,平均 1 秒完

成 167 个用户的并发请求,“循环次数”设置为 1。

图22 并发 50000 用户线程属性配置

步骤2 观察与记录测试结果。

# 加压结束之后,在 JMeter GUI 聚合报告视图中,可以看到此次加压测试的统计结果,从聚合报告

可以看出,有大约 12.42%(约 6210 个用户)的 HTTP 请求失败。

Page 19: H3C CAS JMeter 性能测试操作指导书

17

图23 50000 用户并发访问的测试结果

步骤3 对比加压前后虚拟机的 CPU 与内存利用率。从内存占用情况看,内存峰值达到 100%,要

使 50000 个用户请求全部成功,可能需要添加虚拟机的内存。

CPU(%) 内存(%)

加压前 0.5% 15%

加压后 振荡不固定 80%~100%

6 经验总结

6.1 JMeter和Tomcat服务内存配置

调整 JMeter 的默认内存分配量对测试结果影响较大。默认情况下,当上万个用户同一时刻并发访

问时,可能会造成 JMeter 服务内存溢出和 Tomcat Web 服务内存溢出,此时,可以通过调整 JMeter

和 Tomcat 的配置文件解决。

(1) 调整 JMeter 配置文件

用文本编辑工具打开 JMeter 批处理文件,文件全路径为%JMETER_HOME%\bin\jmeter.bat,将

HEAP 和 NEW 参数调整为:

rem See the unix startup file for the rationale of the following parameters,

rem including some tuning recommendations

set HEAP=-Xms1024m -Xmx8192m

Page 20: H3C CAS JMeter 性能测试操作指导书

18

set NEW=-XX:NewSize=512m -XX:MaxNewSize=4096m

其中,Xms 表示初始分配的堆内存;Xmx 表示最大允许分配的堆内存,按需分配;NewSize 表示

内存不足时,分配的新的内存;MaxNewSize 表示内存不足时,最大可分配的内存大小。

(2) 调整 Tomcat 配置文件

用文本编辑工具打开 Tomcat 批处理文件,文件全路径为%CATALINA_HOME%\bin\catalina.bat,

增加如下行:

rem Guess CATALINA_HOME if not defined

set "CURRENT_DIR=%cd%"

set JAVA_OPTS=-server -Xms1024m -Xmx8192m

6.2 虚拟机内存/vCPU数量对并发性能的影响

从 30000 用户和 50000 用户并发压力测试情况看,加压期间,虚拟机内存峰值到达 100%。为了验

证虚拟机内存对大并发性能的影响,本文档首先在线为被测试虚拟机增加内存至 16GB,对比 8GB

内存与 16GB 内存情况下的性能。

步骤1 扩容虚拟机内存。

# 系统管理员登录 H3C CAS CVM 虚拟化管理平台,修改虚拟机,改变虚拟机内存容量为 16GB。

图24 扩容虚拟机内存

Page 21: H3C CAS JMeter 性能测试操作指导书

19

步骤2 运行与 8GB 内存时完全相同线程配置的 HTTP 并发请求。

# 在测试的时候,发现虚拟机 CPU 利用率一直为 100%,而内存利用率维持在 70%~80%之间,

而 JMeter 聚合报告中已经出现了 HTTP 请求失败的记录,因此,怀疑 CPU 资源不足以满足 Tomcat

服务器的要求。

图25 调大内存配置之后 50000 用户加压时的虚拟机资源利用率

步骤3 对比 8GB 内存与 16GB 内存时的性能。

图26 虚拟机配置 16GB 内存时的 JMeter 性能报告

Page 22: H3C CAS JMeter 性能测试操作指导书

20

虚拟机配置(2vCPU,8GB 内存) 虚拟机配置(2vCPU,16GB 内存)

# Samples 50000 50000

Average(值越小越好) 4068 5242

Median(值越小越好) 2 4

90% Line(值越小越好) 11899 27103

95% Line(值越小越好) 30563 35099

99% Line(值越小越好) 56094 76895

Min(值越小越好) 0 0

Max(值越小越好) 745243 103276

Error%(值越小越好) 12.42% 7.55%

Throughput(值越大越好) 12.6 90.6

KB/Sec(值越大越好) 128.5 966.7

从对比结果分析,增加虚拟机内存能够降低 HTTP 请求出错率,提高吞吐量和服务器端接收到请求

的数据量。

步骤4 扩容虚拟机 vCPU。

# 系统管理员登录 H3C CAS CVM 虚拟化管理平台,修改虚拟机,改变虚拟机 CPU 为 1 路 8 核。

步骤5 运行与 16GB 内存时完全相同线程配置的 HTTP 并发请求。

# 加压期间,在 H3C CAS CVM 虚拟化管理平台上观察虚拟机的资源占用情况,可以清楚地看到

CPU 利用率在 10%左右震荡,内存利用率稳定时维持在 50%左右。

图27 调大 CPU 配置之后 50000 用户加压时的虚拟机资源利用率

Page 23: H3C CAS JMeter 性能测试操作指导书

21

图28 虚拟机配置 8vCPU 时的 JMeter 性能报告

从测试结果看,增加虚拟机 vCPU 数量对 JMeter 的并发访问性能提升是极其明显的,不仅没有出

现一次 HTTP 请求失败的情况,而且,所有指标项都明显好于低配置情况下的并发性能。

虚拟机配置

(2vCPU,8GB 内存)

虚拟机配置

(2vCPU,16GB 内存)

虚拟机配置

(8vCPU,16GB 内存)

# Samples 50000 50000 50000

Average(值越小越好) 4068 5242 18

Median(值越小越好) 2 4 2

90% Line(值越小越好) 11899 27103 2

95% Line(值越小越好) 30563 35099 3

99% Line(值越小越好) 56094 76895 45

Min(值越小越好) 0 0 0

Max(值越小越好) 745243 103276 3221

Error%(值越小越好) 12.42% 7.55% 0.00%

Throughput(值越大越好) 12.6 90.6 92.1

KB/Sec(值越大越好) 128.5 966.7 1045