jmeter java接口_Jmeter压测简单Java接口

Jmeter

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。闲来无事写了一个demo来测试并发访问下的性能。

Web程序

关键部分代码如下

@RequestMapping(value = "/jmeter")

@Controller

public class TestController {

private static Connection connection;

static {

try {

Class.forName("com.mysql.jdbc.Driver");

//待优化:使用数据库连接池

connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=123456");

} catch (Exception e) {

e.printStackTrace();

}

}

@ResponseBody

@RequestMapping(value="/query", method = RequestMethod.GET)

public Object query(HttpServletRequest request,

HttpServletResponse response,

@RequestParam(value = "id", defaultValue = "0") int id) {

Map map = new HashMap();

map.put("id", id);

System.out.println(Thread.currentThread().getName() + "--" + this.hashCode() + "---" + id);

try {

Statement statement = connection.createStatement();

//数据库表中共有1000条数据,id为主键

ResultSet resultSet = statement.executeQuery("SELECT * FROM sheet0 where id = " + id);

if (resultSet.next()) {

System.out.println("success");

}

resultSet.close();

statement.close();

} catch (Exception e) {

e.printStackTrace();

}

return map;

}

}

启动Tomcat后访问http://localhost:8080/jmeter/query?id=395即可。

配置Jmeter

f7dbd6628c930e8cafb2b56df93755f4.png

11c787d287e3df75cae46260bc1f2ba0.png

Random Variable的值设置为0-1000

在聚合报告中可以查看请求的统计情况。下图给200个线程并发时的统计数据

d4c770b8e900bf6601894d84be4a379d.png

统计数据

线程数

平均(ms)

中位(ms)

90线(ms)

95线(ms)

99线(ms)

Min(ms)

Max(ms)

错误率

100

2

3

4

5

5

0

8

0

200

2

2

3

4

4

0

7

0

300

3

2

4

4

21

0

65

0

400

2

2

3

4

7

0

23

0

500

5

3

4

6

71

0

107

0

600

4

3

4

10

66

0

115

0

700

8

3

6

36

132

0

231

0

800

7

3

5

18

142

0

238

0

900

11

3

24

76

142

0

208

0

1000

15

3

43

104

173

0

266

0

1100

6

3

11

21

56

0

124

0

1200

69

14

236

323

446

0

693

0.23%

1300

48

5

172

257

391

0

1588

2.23%

1400

128

12

212

348

2619

0

2852

4.46%

1500

117

70

319

386

488

0

793

0.68%

1600

188

101

460

651

1372

0

1653

3.51%

7100

138

78

396

473

555

0

1235

1.61%

1800

286

204

627

745

1478

0

2717

9.16%

1900

399

258

754

1132

4293

0

5070

15.45%

2000

847

343

2389

4290

7661

1

8366

26.06%

2100

1051

407

3144

5055

7925

0

9811

30.25%

2200

588

295

1393

2648

4391

0

5507

21.64%

2300

1242

455

4254

6766

14442

0

15221

31.02%

2400

1077

429

4304

4789

7903

0

8547

29.08%

2500

1456

505

4483

7858

8195

0

14988

34.73%

e8fc2764a38b2bd59cf74f5a796a7e1a.png

由统计数据可见,当并发线程数在1100个以下时,请求的成功率及95线等指标均比较正常,性能并没有很大的问题。当并发线程数量超过1200个时,错误率和95线等指标急剧上升。可见,正确预估web系统的QPS对于集群中机器的部署数量有直接的指导意义。以下几张图为测试过程中jconsole的监测情况。

9ef58ee7ba33fcb0bd0c8a21c82bf467.png

由jvm的内存使用情况可见,随着jmeter并发线程数的增加,tomcat所在的jvm中的GC频率呈增加趋势。

23445afd43afaecc0b3b53b2c5eac5ef.png

63fd94a33a4c47da779399eea2f8c073.png

当Tomcat的线程数达到最大数量之后就不再增加,对于jmeter的并发请求,tomcat只能使用有限的线程来处理。

测试中使用的机器为Mac Pro2015版,CPU为Intel Core i7,内存为16GB 1600MHz DDR3

JDK版本为64-Bit 1.8.0_121-b13

Tomcat版本为 8.5.3

Jmeter版本为1.0

MySQL版本为5.7.18

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值