简单的并发测试以及线程监控

并发测试:

摘自百度百科:

http://baike.baidu.com/linkurl=i2E0siqQQ0thsa2uAQBp_unMHl83WT0RnhyhR7SngWg47Rfkx1boieQ95Vo6lXCUoyELenYovGLweaQVXZLbLYpZO2YQaz4Mlb0NmSYVOIvjxgsD03QW94DhuYW6I4Bv


  • 主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题,几乎所有的性能测试都会涉及并发测试。



概念

  • 测试目的并非为了获得性能指标,而是为了发现并发引起的问题。 在具体的性能测试工作中,并发用户往往都是借助工具来模拟的,例如LoadRunner性能测试工具中叫做虚拟用户;因为实际情况中去实现同时多人并发的测试环境要求比较高而测试成本高、测试时间也是比较长。

使用Apache 提供的测试工具



ab-(apache bench)测试工具


  • 使用ab工具必须安装apache: http://httpd.apache.org/

  • 输入命令

ab [options] [http[s]://]hostname[:port]/path

//其中-n表示请求数,-c表示并发数 后面接上测试地址
ab -n 10000 -c 10 http://192.168.20.68:8080/firstweb/RP


下面是我在Linux下进行测试输出的测试报告:

[root@localhost html]# ab -n 10000 -c 10 http://192.168.20.68:8080/firstweb/RP

版本信息

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

1


完成的请求

Benchmarking 192.168.20.68 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

简单的并发测试以及线程监控_第1张图片


Web服务器的信息,可以看到服务器采用的是Apache,域名是192.168.20.68,端口是8080

Server Software:        Apache-Coyote/1.1
Server Hostname:       192.168.20.68
Server Port:            8080

3


请求的文档的相关信息,所在位置“/firstweb/RP”,文档的大小为338436 bytes(此为http响应的正文长度)

Document Path:          /firstweb/RP
Document Length:        1 bytes

4


//并发请求数
Concurrency Level:      10
//测试时间
Time taken for tests:   9.867 seconds
//完成的请求数
Complete requests:      10000
//失败的请求
Failed requests:        986 (Connect: 0, Receive: 0, Length: 986, Exceptions: 0)
Write errors:           0
//网络传输量
Total transferred:      1221474 bytes
//html内容传输量
HTML transferred:       10990 bytes

简单的并发测试以及线程监控_第2张图片


//吞吐率
Requests per second:    1013.48 [#/sec] (mean)
//用户平均请求等待时间
Time per request:       9.867 [ms] (mean)
//服务器平均请求处理时间
Time per request:       0.987 [ms] (mean, across all concurrent requests)
//传输速率
Transfer rate:          120.89 [Kbytes/sec] received

6


//网络上消耗的时间的分解

Connection Times (ms)       min  mean[+/-sd] median   max
Connect:                    0    4  10.0      3     426
Processing:                 1    6  15.3      4     427
Waiting:                    0    4  11.4      3     426
Total:                      2   10  18.4      8     451

简单的并发测试以及线程监控_第3张图片


//每个请求处理时间的分布情况
Percentage of the requests served within a certain time (ms)
  50%      8
  66%      8
  75%      9
  80%      9
  90%     11
  95%     13
  98%     20
  99%     28
 100%    451 (longest request)

简单的并发测试以及线程监控_第4张图片




JMeter 测试软件



这是一款纯java代码写的测试工具,运行需要jdk环境

  • API: http://jmeter.apache.org/api/index.html

  • 官网:http://jmeter.apache.org/

  • 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi

  • 或者到本人百度云下载:链接:http://pan.baidu.com/s/1gf1IyCb 密码:j33m

简单的并发测试以及线程监控_第5张图片


安装之后双击打开bin目录下的

10

简单的并发测试以及线程监控_第6张图片


右键添加一个 线程组setUp Thread Group

简单的并发测试以及线程监控_第7张图片

简单的并发测试以及线程监控_第8张图片


右键 serUp Thread Group 添加一个http请求

简单的并发测试以及线程监控_第9张图片


填写HTTP请求配置

简单的并发测试以及线程监控_第10张图片


点击 绿色的小箭头就可以运行了

简单的并发测试以及线程监控_第11张图片


会提示你保存一下

简单的并发测试以及线程监控_第12张图片


程序右上角的是指 总共1000个线程,执行了937个

18




设置Java程序的内存,让它可以支持更大的并发量

我之前发过一篇多线程的文章,我们知道:内存越大 能开启的线程更多

那如何设置程序的运行内存呢?

http://blog.csdn.net/gfd54gd5f46/article/details/55058552

1、设置JVM内存

-Xms 初始堆大小
-Xmx 最大堆大小
-Xmn 年轻代大小(1.4or lator)
  • Eclipse配置

运行java程序时做配置

19


在VM grguments 下输入配置信息,分配程序的运行内存

简单的并发测试以及线程监控_第13张图片



2、使用JDK自带的 jvisualvm监控线程


  • 直接在命令行输入jvisualvm 即可打开

简单的并发测试以及线程监控_第14张图片


然后我运行一个程序,就可以监控到程序的信息了

里面开启4个线程

简单的并发测试以及线程监控_第15张图片


在Demo1(类名)下面的线程里就能看到当前运行的线程了
我在程序里面里面开启了4个线程

简单的并发测试以及线程监控_第16张图片


颜色的表示的是状态

24

你可能感兴趣的:(javaSE)