当Web应用的系统性能成为用户访问瓶颈的时候,作为系统的构建者,Code Monkey自然无法置身事外。专业的性能测试,自然需要有专门的测试部门来负责主导,然而作为程序猿,关注性能、了解一点和系统性能相关的知识,无论是对工作、还是从完善自身知识体系的角度来考虑都大有裨益。在这篇博客中,使用的工具包括JMeter、Tomcat和Visual VM,重点在于JMeter的入门使用。
【使用工具】
JMeter:用于对Web应用进行性能测试,是Apache组织的顶级项目之一。作为一个顶级项目,都意味着会有一个专门的项目管理委员会,JMeter官网如是说。JMeter最初是被设计用来对JServ服务器进行性能测试的,而JServ即是Apache Tomcat的前身,因此使用JMeter测试基于Tomcat的Web应用优势非常明显。
Tomcat:最流行的Java Web容器,由Sun公司最初开发、然后成为开源项目,并捐赠给Apache组织。从在校学生编写的Java EE版本的Hello World程序,到一线互联网公司的大型Web站点,都可以看到它的身影。
Visual VM:JDK自带的一个可视化的JVM监控程序,可以从CPU、内存、类加载、线程数目等多个维度对JVM进行监控,可以安装Visual GC插件、对垃圾回收GC进行详细的追踪。
【安装与配置】
1. 下载安装:
访问JMeter官网首页http://jmeter.apache.org,点击左侧导航Download Releases,进入JMeter下载页面
http://jmeter.apache.org/download_jmeter.cgi,下载apache-jmeter-2.12.zip压缩包,解压到磁盘任意
目录,如E:\study。
2. 环境变量:
为了从命令行直接启动JMeter,而不是每次都进入到JMeter的安装目录启动,需要进行环境变量的设置。
添加变量JMETER_HOME,值为JMeter的安装目录:E:\study\apache-jmeter-2.12。然后将JMeter的\bin目录
添加到Path变量的最前面,内容为:%JMETER_HOME%\bin;
参照JDK的环境变量配置方式即可,因此没有理解难度。
![](/qrcode.jpg)
3. 堆内存设置:
进入JMeter的\bin目录,打开JMeter的启动脚本jmeter.bat,找到如下行内容:
set HEAP=-Xms512m -Xmx512m
将该行修改为如下内容即可:
set HEAP=-Xms1024m -Xmx1024m
说明:其实堆内存设为512m完全可以满足JMeter的基本使用。需要说明的是启动JMeter作为一个JVM实例,和Tomcat一样,都拥有自己运行时的数据区域。这里只是展示一种思路,一旦出现各种关于JVM的疑难杂症,知道为什么、如何去处理即可。
4. 界面语言:
JMeter启动时自动判断当前系统平台的Locale、使用合适的语言显示操作界面,但是本地化做的不彻底、展示的是中英文夹杂的界面,让人失望。因此直接修改配置,展现英文界面。进入JMeter的\bin目录,打开jmeter.properties,将注释掉的如下行去掉注释即可。
language=en
5. 启动JMeter:在命令行下键入jmeter或者jmeter.bat
6. 界面风格:
选择菜单“Options -> Look and Feel -> Nimbus”,使用一种比较有灵气(nimbus)的操作界面。
【简单使用】
1. 创建测试计划(Test Plan):启动JMeter之后、重命名Test Plan为build-web-test-plan
2. 添加线程组(Thread Group):右键选择菜单“Add -> Threads(Users) -> Thread Group”,将该节点重命名为Jmeter Users,同时设置线程属性:如下三个属性分别设为500,1,10
Number of Threads(users):线程数目,使用线程模拟的用户的数目。
Ramp-Up Period:上升周期,在多长的时间内创建所有的线程数目。
Loop Count:循环次数,如果需要一直重复发送请求、勾选复选框Forever。
3. 添加取样器(Sampler):右键选择菜单“Add -> Sampler -> HTTP Request”,创建HTTP请求,并且将其重命名为Home Page,同时设置如下参数
Server Name or IP:设为localhost。
Port Number:设为80。
4. 设置监听器(Listener):右键菜单“Add -> Listener -> Graph Results”创建图形化的结果输出,同时可以添加View Results in Table、Summary Report监听器。
5. 保存测试计划:选择菜单“File -> Save Test Plan as”,命名为build-web-test-plan.jmx
6. 启动Tomcat:端口号设为80,同时添加线程池配置,参考:Tomcat学习笔记 - 【性能优化与监控】
7. 启动Visual VM:在命令行下键入命令jvisualvm.exe
8. 执行测试计划:点击工具栏“Start”按钮,切换到Graph Results节点,看到如下信息
在发送大量并发请求前后,CPU、堆内存,线程数目的变化情况,可以看到在处理完大量并发请求前后,线程的数目发生的显著的变化。