Web服务请求异步化测试(4)
发表于:2012-10-24来源:Csdn作者:放翁点击数:
标签:web测试
可以看到,在TPS和Response Time上两者基本上没有太大差别,TPS就等于500/3=167左右(3秒一个请求,因此用这种简单算式可以算出),响应时间也较为正常。当时
可以看到,在TPS和Response Time上两者基本上没有太大差别,TPS就等于500/3=167左右(3秒一个请求,因此用这种简单算式可以算出),响应时间也较为正常。当时我发现在每秒吞吐量上有些差别,后来单个测试case跑了一下,发现是返回的http header比较大,应该是在做异步化时重入等作的一些标识(后面其他容器的异步化也是一样)。
最大处理请求数都在服务端后台看到是500,等同于最大的并发用户数。
场景2:1000 并发用户场景下,后端服务一次请求消耗3秒钟
容器 |
模式 |
TPS |
Average Response Time(s) |
Average Throughput(byte/s) |
最大请求处理数 |
Success rate |
Jetty7 |
asyn(resume) |
317.06 |
3.036 |
74826 |
1000 |
100% |
Tomcat6 |
syn |
163.323 |
5.904 |
18455 |
500 |
100% |
场景2就在资源不足的情况下,比较异步服务请求与同步请求处理能力。(例如由于后端某些服务比较慢,导致前段的服务器能够承载的请求数目超过了线程数)
这个场景的结果可以看到TPS在异步模式下与并发用户数呈现同步增长,就好比配置了1000个线程作为线程池一样,同样在后端打出的最大请求数上也证明了这一点,因此前段线程池的服务能力在异步的情况下充分复用(当然这里使用的异步服务处理使用的是NIO而不是BIO的Connector)。同样在吞吐量上依然是增加的,由于异步附加的内容。
场景3:1500 并发用户场景下,后端服务一次请求消耗3秒钟
容器 |
模式 |
TPS |
Average Response Time(s) |
Average Throughput(byte/s) |
Server Load |
Success rate |
Jboss |
syn |
75.546 |
5.347 |
21002 |
0.115 |
68% |
Jetty7 |
Syn |
163.156 |
8.788 |
19252 |
0.129 |
100% |
Jetty7 |
Asyn(complete) |
432.153 |
3.312 |
76491 |
2.649 |
100% |
Jetty7 |
Asyn(resume) |
423.638 |
3.375 |
99979 |
2.826 |
100% |
Tomcat6 |
Syn |
163.836 |
8.75 |
18513 |
0.258 |
100% |
Tomcat7 |
ASyn |
423.501 |
3.328 |
54632 |
1.064 |
99.3% |
场景三比对了现有TOP的部署模式(Apache + modjk + Jboss)和Jetty7的同步模式,两种异步模式,Tomcat同步模式,Tomcat的servlet3.0异步模式的处理情况。根据测试可以得到的信息如下:
1. 现有部署方式在后端服务处理耗时较大的情况下,处理能力不如Jetty7和Tomcat6,同时出错率很高。
2. Jetty7的同步处理测试结果和Tomcat6的同步处理测试结果很类似,但是load方面jetty7更好。
3. 异步处理方面Jetty7的两种方式基本上差别不大(后续还需要深入源码看看对于数据缓存资源复用的状况),Tomcat7的异步处理成功率有些问题(错误多半是在获取response回写的时候,response已经被提前释放,看来Tomcat7还是需要一些时间来考验),load上来说tomcat结果比较好。
原文转自:http://www.ltesting.net