对java类型的应用做性能测试,我一般会从如下三个方面去进行
1. 利用jmter 测试应用程序的吞吐量、响应时间
准备脚本,设置线程,执行即可
脚本里要设置的内容:响应断言、察看结果树(仅显示错误)、聚合报告、Response Time Graph.
聚合报告里的各项含义:
Label:说明是请求类型,如Http,FTP等请求。 #Samples:也就是图形报表中的样本数目,总共发送到服务器的样本数目。 Average:也就是图形报表中的平均值,是总运行时间除以发送到服务器的请求数。 Median:也就是图形报表中的中间值,是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。 90%line:是指90%请求的响应时间比所得数值还要小。 Min:是代表时间的数字,是服务器响应的最短时间。 Max: 是代表时间的数字,是服务器响应的最长时间。 Error%:请求的错误百分比。 Throughput:也就是图形报表中的吞吐量,这里是服务器每单位时间处理的请求数,注意查看是秒或是分钟。 KB/sec:是每秒钟请求的字节数。
官网说明:
http://jmeter.apache.org/usermanual/glossary.html
2. 利用nmon 测试服务器的硬件情况
步骤:2.1 安装nmon
下载链接:http://pan.baidu.com/s/1kT5f2b9
将*.tar.gz解压即可,然后选择与被测服务器操作系统相同的文件,进行赋权限
2.2 执行命令,收集服务器数据
./nmon -f -t -r Test1 -s30 -c120
-f:写文件 默认写入当前目录下的localhost_140811_1713.nmon文件里
-t: include top processes in the output
-r <runname> 用于电子表格文件 [default hostname]
-s30:每30秒收集一次数据
-c120:一共收集120次
2.3 压力测试执行结束后,利用nmon_analyser打开localhost_140811_1713.nmon,可得分析后的图表和结果
nmon介绍:https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon
nmon analyser介绍:https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon_analyser
各参数说明:http://blog.csdn.net/launch_225/article/details/7275202#_Toc282426704
3. 利用jstat 测试服务器的内存情况
步骤:jstat是JAVA的功能,故不需要单独安装,直接执行命令即可
例:jstat -gcutil 7676 30000 490 >> jvm0811.csv
7676:进程号
30000:30000毫秒即30秒收集一次数据
490:一共收集490次
>> jvm0811.csv:写到jvm0811.csv文件里
一些术语的中文解释:
S0C:年轻代中第一个survivor(幸存区)的容量 (字节) S1C:年轻代中第二个survivor(幸存区)的容量 (字节) S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节) S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节) EC:年轻代中Eden(伊甸园)的容量 (字节) EU:年轻代中Eden(伊甸园)目前已使用空间 (字节) OC:Old代的容量 (字节) OU:Old代目前已使用空间 (字节) PC:Perm(持久代)的容量 (字节) PU:Perm(持久代)目前已使用空间 (字节) YGC:从应用程序启动到采样时年轻代中gc次数 YGCT:从应用程序启动到采样时年轻代中gc所用时间(s) FGC:从应用程序启动到采样时old代(全gc)gc次数 FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s) GCT:从应用程序启动到采样时gc用的总时间(s)
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节)
PGCMX:perm代的最大容量 (字节)
PGC:perm代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制
官方介绍:http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html
另外:jconsole也可用来监听java应用。但个人不建议用于对远程机做长时间的压测,可用来短时测试,或者监测本地的情况。
windows机器上运行jconsole.exe即可,目录C:Program FilesJavajdk1.6.0_43in
运行时如下图所示