集中Rest结构实现性能对比分析
2012-09-07 23:45
351 查看
测试用例 |
初始化数据: |
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 |
相关文章推荐
- 某接口3种实现方案性能压测结果对比及分析
- 数据结构实验4(排序算法的实现及性能分析)
- 关于若干数据库数据插入性能的对比分析
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析
- 由浅入深探究mysql索引结构原理、性能分析与优化
- [转]PHP函数的实现原理及性能分析
- [转]PHP函数的实现原理及性能分析 作者:HDK (百度)
- Spark商业案例与性能调优实战100课》第2课:商业案例之通过RDD实现分析大数据电影点评系统中电影流行度分析
- Pthreads并行编程之spin lock与mutex性能对比分析
- 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析
- 以金山界面库(openkui)为例思考和分析界面库的设计和实现——代码结构(完)
- 百度工程师讲PHP函数的实现原理及性能分析(一)
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析
- [转]PHP函数的实现原理及性能分析
- 监控与性能分析系列:1)strace和ltrace跟踪对比同一个socket应用程序
- php函数的实现原理及性能分析
- 数据结构之程序性能检测(一):三种排序算法·对比
- expdp和exp性能对比与原理分析
- 38、各Set实现类的性能分析
- python中两种栈实现方式的性能对比