Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
H3C CAS JMeter 性能测试操作指导书
Copyright © 2015 杭州华三通信技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,
并不得以任何形式传播。本文档中的信息可能变动,恕不另行通知。
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
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
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
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 工具
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;”,点击<确定>按钮。
5
图4 编辑系统变量
# 新建系统变量“CLASSPATH”,变量值为“%JAVA_HOME%\lib”,使 Java 自动从目录中发现 jar
文件类。
图5 设置 Java 环境变量:设置 jar 文件类路径
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 安装路径
7
# 编辑系统变量“Path”,添加变量值:“%CATALINA_HOME%\lib;%CATALINA_HOME%\bin;”,
点击<确定>按钮。
图7 编辑系统变量
# 在“资源管理器”中,定位到目录“C:\tomcat\apache-tomcat-8.0.29\bin\”目录,右键单击
“startup.bat”文件,选择“以管理员身份运行 (A)”。
图8 启动 Tomcat 服务
8
# 当弹出的命令行窗口显示如下图所示时,表示 Tomcat 服务已经正常启动。
图9 Tomcat 服务后台执行日志
# 服务安装成功之后,使用浏览器访问“http://localhost:8080/”可以看到 Tomcat 的欢迎界面。
图10 安装成功之后的 Tomcat Web 服务
5.2 配置性能加压工具
步骤1 启动 JMeter 测试工具
9
# 进入 JMeter 所在的文件路径,例如:“C:\jmeter\apache-jmeter-2.13\”,在“bin”目录下找到
“jmeter.bat”文件,点击鼠标右键,选择“以管理员身份运行(A)”。
图11 运行 JMeter 工具
步骤2 建立线程组。
# 在 JMeter GUI 界面上,右键单击“测试计划”,依次选择“添加”->“Threads (Users)”->“线
程组”。
图12 建立线程组
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 服务首界面链接进行压力访问。
11
图15 设置 HTTP 请求
步骤4 设置输出报告类型。
# 右键单击“HTTP 请求”,依次选择“添加”->“监听器”->“Aggregate Graph”,表示测试结果
以聚合报告的形式输出。
图16 设置性能输出报告类型
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%用户的请求响应时间。
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 观察与记录测试结果。
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。
15
图20 并发 30000 用户线程属性配置
步骤2 观察与记录测试结果。
# 加压结束之后,在 JMeter GUI 聚合报告视图中,可以看到此次加压测试的统计结果,从聚合报告
可以看出,有大约 0.16%(约 4800 个用户)的 HTTP 请求失败。
图21 30000 用户并发访问的测试结果
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 请求失败。
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
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 扩容虚拟机内存
19
步骤2 运行与 8GB 内存时完全相同线程配置的 HTTP 并发请求。
# 在测试的时候,发现虚拟机 CPU 利用率一直为 100%,而内存利用率维持在 70%~80%之间,
而 JMeter 聚合报告中已经出现了 HTTP 请求失败的记录,因此,怀疑 CPU 资源不足以满足 Tomcat
服务器的要求。
图25 调大内存配置之后 50000 用户加压时的虚拟机资源利用率
步骤3 对比 8GB 内存与 16GB 内存时的性能。
图26 虚拟机配置 16GB 内存时的 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 用户加压时的虚拟机资源利用率
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