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

本文介绍了并发测试的重要性,包括使用Apache Bench和JMeter工具进行压力测试,以及通过设置JVM内存和利用jvisualvm监控Java程序的线程状态,以确保在并发环境下程序的稳定性和性能。
摘要由CSDN通过智能技术生成

并发测试:

摘自百度百科:

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


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



概念

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

使用Apache 提供的测试工具



ab-(apache bench)测试工具


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

2


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

5


//吞吐率
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

7


//每个请求处理时间的分布情况
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)

8




JMeter 测试软件



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

9


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

10

11


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

12

13


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

14


填写HTTP请求配置

15


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

16


会提示你保存一下

17


程序右上角的是指 总共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 下输入配置信息,分配程序的运行内存

20



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


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

21


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

里面开启4个线程

22


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

23


颜色的表示的是状态

24

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值