1. 测试情况概述
- 本次压测目标是tomcat8和tomcat7性能比较,压测场景是:用户注册场景(关闭日志), 压测过程中,监测应用服务器和db服务器的资源使用情况,
监测内存回收情况;同时监控各涉及系统的处理能力, 判断tomcat8的性能是否优于tomcat7,是否满足现网实际业务需求.
压测目标 | tomcat8和tomcat7性能比较, 判断tomcat8的性能是否优于tomcat7,是否满足实际业务需求 |
压测场景 | 用户注册场景(关闭日志) 场景一:Tomcat7和tomcat8,并发数30个用户相同的情况下,分别压测时间为30分钟、2个小时、4个小时、12个小时、72个小时。 场景二:Tomcat7和tomcat8,并发数从10~100区间,压测时间为30分钟。 |
涉及系统 | (server端)、(会员)、(认证)、(风控) |
涉及数据库 | mysql读写操作(数据量与线上保持一致,会员数据1000W) |
其他 | Redis/Kafka/AMQ |
系统配置 | CPU8核(4个系统),内存24G |
内存配置 | 内存配置相同:-Xmx3g -Xms3g -Xmn1g |
线程配置 | 线程配置相同:maxThreads="400" acceptCount="200" maxConnections 默认10000 |
| ulimit -n 65535 |
2. 测试结果
1) 测试场景:Tomcat7和tomcat8,并发数30个用户相同的情况下,分别压测时间为30分钟、2个小时、4个小时、12个小时、72个小时。
以下是测试情况的详细数据:
tomcat分类 | 并发数 | 运行时间 | 总数 | TPS | Average resptime | 90% | 95% | 99% | error | 应用CPU | DB CPU(tnp xhy auth) | DB CPU(wfm) | 内存情况 |
Tomcat7 | 30 | 30mins | 101788 | 56.6 | 486ms | 648ms | 712ms | 865ms | 0.01% | 77.10% | 13% | 13% | 内存回收正常 |
30 | 2hours | 404893 | 56.2 | 492ms | 666ms | 742ms | 973ms | 1% | 74.40% | 13.60% | 12.20% | 内存回收正常 | |
30 | 4hours | 864879 | 60 | 465ms | 599ms | 648ms | 756ms | 0% | 78% | 15% | 16% | 内存回收正常 | |
30 | 12hours | 2546818 | 59 | 473ms | 617ms | 678ms | 854ms | 0.78% | 76.00% | 14.20% | 16.70% | 内存回收正常 | |
Tomcat8 | 30 | 30mins | 149962 | 83 | 314ms | 436ms | 502ms | 781ms | 0% | 81.90% | 10% | 10% | 内存回收正常 |
30 | 2hours | 645248 | 89.6 | 298ms | 416ms | 469ms | 665ms | 0% | 80% | 10% | 11% | 内存回收正常 | |
30 | 4hours | 1165913 | 81 | 298ms | 427ms | 479ms | 614ms | 0% | 75.6% | 14.6% | 17.5% | 内存回收正常 | |
30 | 12hours | 3594609 | 83.2 | 291ms | 418ms | 469ms | 621ms | 6% | 76.70% | 14.40% | 16.80% | 内存回收正常 | |
15 | 72hours | 10032761 | 40 | 274ms | 398ms | 423ms | 524ms | 0.4% | 43.20% | 16.00% | 18.00% | 内存回收正常
|
2) 测试场景:Tomcat7和tomcat8,并发数从10~100区间,压测时间为30分钟。
以下是测试情况的详细数据:
Tomcat分类
|
并发数
| 压测时间 | 平均响应时间 | 99%响应时间 | tps | 总处理数 |
Tomcat8 | 10 | 30mins | 171ms | 357ms | 48.7 | 87714 |
20 | 30mins | 324ms | 577ms | 54.4 | 97848 | |
30 | 30mins | 314ms | 781ms | 83 | 149962 | |
40 | 30mins | 396ms | 740ms | 88.2 | 158781 | |
50 | 30mins | 494ms | 953ms | 86.3 | 155355 | |
60 | 30mins | 619ms | 1235ms | 84.4 | 151890 | |
70 | 30mins | 757ms | 1907ms | 77.8 | 140070 | |
80 | 30mins | 813ms | 1587ms | 83.3 | 149724 | |
90 | 30mins | 901ms | 1766ms | 84.5 | 152129 | |
100 | 30mins | 1004ms | 1900ms | 84 | 151286 |
Tomcat分类 |
并发数 |
压测时间 | 平均响应时间 |
99%响应时间 | tps | 总处理数 |
Tomcat7 | 10 | 30mins | 176ms | 361ms | 47.8 | 86046 |
20 | 30mins | 314ms | 540ms | 56 | 100805 | |
30 | 30mins | 486ms | 865ms | 56.6 | 101788 | |
40 | 30mins | 702ms | 1291ms | 52.3 | 94089 | |
50 | 30mins | 803ms | 1353ms | 57.7 | 103941 | |
60 | 30mins | 1009ms | 1787ms | 55.7 | 100302 | |
70 | 30mins | 1120ms | 1981ms | 58.5 | 105291 | |
80 | 30mins | 1307ms | 2421ms | 57.5 | 103572 | |
90 | 30mins | 1436ms | 2592ms | 59.3 | 106675 | |
100 | 30mins | 1633ms | 2962ms | 57.8 | 104142 |
3) 压测结论:
1.从以上第一组表格和图形对比得出,Tomcat8和tomcat7在相同配置和相同并发情况下,吞吐率和响应时间均优于tomcat7,可更快的处理更多的用户请求,测试过程中的CPU使用率相差不大。
2.从以上第二组表格和图形对比得出, Tomcat8在当前配置情况下,并发用户数为30以上,吞吐率和请求处理时间有明显的提升,达到最佳;而Tomcat7 ,并没有随着并发用户量增大,吞吐率和响应时间有更好的表现。
推出:Tomcat8在并发用户数上优于Tomcat7,可同时处理更多用户发起的请求,同时tomcat8的响应速度更快。测试过程中的CPU最高使用率:CPU使用率相差不大,均较高,达到70%。
说明:
本次压测在独立性能环境下进行,相关应用、db服务器均独立部署,不依赖其他环境系统。
压测过程:通过jmeter并发调用注册接口,同时通过nmon监测应用服务器和db服务器资源使用情况,同时监控缓存redis以及内存回收的性能情况
3. 总结和建议:
- Tomcat8和tomcat7在相同配置和相同并发情况下,tomcat8的吞吐量和响应时间均优于tomcat7,可更快的处理更多的用户请求,测试过程中的CPU使用率相差不大。
- 压测过程中,发现会员系统的异步记录日志消耗50%左右的cpu,目前线上日志级别是info,需根据重要程度调整日志级别。