专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Java压测工具的总结

Java压测工具的总结

更新时间:2021-11-17 10:58:57 来源:星辉 浏览509次

Java压测工具是众多的Java开发工具中的一种,小编来给大家介绍一下:

ab

ab是apache自带的压力测试工具,使用起来非常方便.

安装

如果安装了apache, 那么ab已经安装好了,如果不想安装apache的话,可以通过以下方式安装ab

# ubuntu
sudo apt-get install apache2-utils
# centos
yum -y install httpd-tools

压测

在压测前,需要关注几个选项,通过 ab -help 查看

Options are:
    -n requests     要执行的请求次数
    -c concurrency  并发数量
    -s timeout      响应时间

执行

ab -n 1000 -c 100 -s 1 http://127.0.0.1:1080/event?config_name=mysql_config 
# 总共100个并发执行1000此请求,超时时间为1s

结果分析

在执行上述测试命令后,得到如下结果,主要关注以下几个指标:

Failed requests:失败的请求

Requests per second:也就是常说的QPS, 每秒查询率,这是一个平均值

Time per request:完成一个请求所花费的时间

Transfer rate: 网络传输速度。 对于大文件的请求测试,这个值很容易成为系统瓶颈所在 要确定该值是不是瓶颈,需要了解客户端和被测服务器之间的网络情况,包括网络带宽和网卡速度等信息。

Server Software:        
Server Hostname:        127.0.0.1
Server Port:            1080
Document Path:          /event?config_name=mysql_config
Document Length:        0 bytes 
Concurrency Level:      100
Time taken for tests:   0.137 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      75000 bytes
HTML transferred:       0 bytes
Requests per second:    7275.11 [#/sec] (mean)
Time per request:       13.745 [ms] (mean)
Time per request:       0.137 [ms] (mean, across all concurrent requests)
Transfer rate:          532.84 [Kbytes/sec] received 
Connection Times (ms)
                min  mean[+/-sd] median   max
Connect:        0    1   1.0      1       5
Processing:     1   12   5.9     11      30
Waiting:        1   11   5.9     11      29
Total:          1   13   6.1     13      30
Percentage of the requests served within a certain time (ms)
  50%     13
  66%     15
  75%     17
  80%     18
  90%     22
  95%     25
  98%     28
  99%     29
 100%     30 (longest request)

wrk

wrk 是一款c语言开发的现代的http性能基准测试工具,使用简单,功能强大。

安装

安装可以从github上下载源码编译安装 wrk github地址

压测

wrk的命令选项并不多,很容易使用

Usage: wrk <options> <url>                            
  Options:                                            
    -c, --connections <N>  建立的连接  
    -d, --duration    <T>  执行测试时间           
    -t, --threads     <N>  线程数量                                                         
    -s, --script      <S>  使用lua脚本(非常强大的功能,有兴趣可以深入研究)       
    -H, --header      <H>  为每一个HTTP请求添加HTTP头        
        --latency          在压测结束后,打印延迟统计信息   
        --timeout     <T>  超时时间    
    -v, --version          Print version details                                                            
  Numeric arguments may include a SI unit (1k, 1M, 1G)
  Time arguments may include a time unit (2s, 2m, 2h)
wrk -c100 -t10 -d30s http://127.0.0.1:1080/event?config_name=mysql_config 
# 10个线程100个连接压测30s

结果分析

wrk生成的结果报告比较简洁,主要关注的点和ab差不多

Requests/sec: QPS

Transfer/sec: 网络传输速度

Running 30s test @ http://127.0.0.1:1080/event?config_name=mysql_config
  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    21.02ms   92.04ms   1.05s    97.79%
    Req/Sec     1.22k   229.72     2.38k    75.47%
  365483 requests in 30.07s, 26.14MB read
Requests/sec:  12152.63
Transfer/sec:      0.87MB

jmeter

jmeter 是由java编写的一个GUI测试工具,功能强大且结果多样

安装

安装可以去 apache jmeter 下载

使用

建立 Plan

建立Thread Group

建立好 Plan后就可以建立 Thread Group 了, 建立方式

选中Plan 后, Edit > Add > Threads > Thread Group

Thread Group 可以设置线程的一些参数,主要是 Number of Threads(users) 和 Loop Count

添加Listener

Listener主要生成一些结果报告,添加方式为

选中Thread Group后 Edit > Add > Listener

可以看到有很多结果报告,我平时主要用到以下几个结果报告

View Results Tree

Aggregate Report

Graph Results

View Results Table

View Results Tree

这个报告会生成请求树,点击可以查看每个请求的信息

Aggregate Report

这个报告会生成请求的聚合统计信息, 主要参数就是QPS, 传输速度等

Graph Results

强大的图形报告结果

图形结果一些说明

No of Samples(样本数): 代表向服务器发送的请求数目

Deviation(偏离):代表服务器相应时间变化的数据的分布

Latest Sample(最新样本): 表示服务器相应最后一个请求的时间

Throughtput(吞吐率):这里是服务器每分钟对数据的处理量

Average(平均值): 表示总运行的时间除以发送给服务器的请求数

Median(中间值): 代表有一半的服务器时间低于该值,而另一半高于该值

根据图形结果得到的一些分析

吞吐率起步的时候比较低,随着请求数量越来越多,吞吐率先增后减

偏离值还不错,保持一个很平稳的状态 如果偏离数量随着请求数量越来越大, 说明服务器越来越不稳定

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>