集中Rest结构实现性能对比分析

时间:2022-06-10 11:40:45

测试用例

初始化数据:

Customer对象具有id、name两个属性,初始化13个对象的map,以id为key

测试输入输出:

对服务提交get请求,去Customer对象列表。

测试注意:

除各实现要求的必须差别外,开发中保证代码对Customer的操作是完全一致的。减少因操作不一致造成的性能差异。

测试步骤:

1.      针对不同实现,分别搭建独立的Tomcat服务器,保证服务器的资源配置相同。

2.      针对每个实现,通过客户端多线程访问服务器,测试多线程同时访问服务器且全部返回正确的极限值。

3.      使用得出的极限值进行3次测试,每次要求重新启动Tomcat服务,记录测试结果,其中服务器内存使用记录要求包括:启动Tomcat但未访问服务前

                    、服务访问后以及在访问服务的过程中3次随机截取的内存使用情况。

4.      使用较小的并发数量,长时间对每个实现分别进行测试,测试服务的稳定性。要求时间大于3小时,并发量大于30线程。

 

 

测试环境:

Servlet容器信息:

Tomcat

版本

6.0.29

内存分配

初始内存

Tenured        10.69Mb

Perm           12Mb

Total           49.66Mb

最大内存

Tenured        170.69Mb

Perm           64Mb

Total           365.5Mb

项目版本:

Apache CXF

2.3.1

Jersey

1.5

RESTEasy

2.1

Restlet

Java EE 2.0.4

测试工具:

JMeter

2.4

(客户端压力)

Probe

1.7b

(Tomcat内存监控)

 

 


 

线程

线程间隔

循环次数

平均值

最小值

最大值

吞吐量/秒

流量(KB/秒)

说明

index测试

500

0

100

线程循环中断,大压力下,tomcat仍然能够返回,证明瓶颈不发生在tomcat端

cxf get 测试

cxf运行瓶颈测试

130

0

100

线程循环中等情况下,最大线程压力

cxf第一次资源消耗测试

100

0

300

449

4

8438

197.9

64.6

cxf第二次资源消耗测试

100

0

300

425

4

10519

204.3

66.6

cxf第三次资源消耗测试

100

0

300

451

5

9082

196.3

64

jersey get 测试

jersey运行瓶颈测试

250

0

100

速度快于cxf,资源消耗小于cxf

jersey第一次资源消耗测试

100

0

300

76

1

6359

877.3

619.4

吞吐量未达到极限

jersey第二次资源消耗测试

100

0

300

112

1

8298

712

502

jersey第三次资源消耗测试

100

0

300

129

1

6281

623.2

440

Resteasy get 测试

Resteasy运行瓶颈测试

无法测试,800线程,300次循环无错误

效率高于Jersey,内存消耗也大于Jersey

Resteasy第一次资源消耗测试

100

0

300

67

1

7870

713.3

505

并未达到极限,与更多线程的吞吐量极限差距较大,最大到1400

Resteasy第二次资源消耗测试

100

0

300

97

1

9288

804.9

569.9

Resteasy第三次资源消耗测试

100

0

300

96

1

11398

808.2

572.2

Restlet get 测试

Restlet运行瓶颈测试

100

0

100

性能最差的实现

Restlet第一次资源消耗测试

80

0

100

488

6

8619

148.3

221.7

Restlet第二次资源消耗测试

80

0

100

557

6

7815

131.2

196.2

Restlet第三次资源消耗测试

80

0

100

558

6

9562

130.7

195.4

稳定性测试

cxf稳定性测试

50

1小时以上

239

1

8482

207.8

67.8

jersey 稳定性测试

50

0

1小时以上

37

1

10536

1052.5

743.1

Resteasy稳定性测试

50

0

1小时以上

41

1

10381

1170.8

829

Restlet稳定性测试

50

0

1小时以上

342

6

13967

145.6

217.7