XXX压力测试报告
时间:2018-09-05 测试人员:xxx
XXX压力测试报告
目录
一 测试内容... 2
二 测试方法... 2
三 测试目标... 2
四 测试环境... 2
五 系统部署... 3
5.1 物理部署... 3
5.2 网络访问... 3
六 性能测试结果与分析... 4
6.1 jmeter集群压测(5进程-每个进行10线程)... 4
6.2 jmeter集群压测(10进程-每个进行5线程)... 7
6.3 jmeter集群压测(10进程-每个进行10线程)... 11
七 结果汇总分析... 13
一 测试内容
本次测试是针对xxx系统进行的压力测试,在交易接口中,只对交易接口进行压力测试,其中涵盖数据验签与签名功能。
二 测试方法
本次采用apache的开源测试工具jmeter,采用本地动态拼装请求数据并通过http协议post方式发送支付请求。并采用650张测试银行卡测试,其中大概有30张存在“无足够的存款”和“受限制的卡”情况。
三 测试目标
1) 获取在单机部署情况下最大TPS值
2) 是否可以达到原来预期值TPS:50
四 测试环境
环境 | 机器型号 | 操作系统 | 硬件cpu | 硬件mem |
客户端 | server2008虚拟机 | windows | 32核 | 32G |
服务端 | HP DL580 | linux | 64核 | 126G |
由于客户端与服务端的机器性能优秀,暂不会对压测形成瓶颈,该方面影响可以忽略
五 系统部署
5.1 物理部署
5.2 网络访问
六 性能测试结果与分析
6.1 jmeter集群压测(5进程-每个进行10线程)
启5个进程,每个进程启动10个线程,并发为50,项目日志开启info状态
6.1.1 聚合报告
Label | #Samples | Average | Median | 90%Line | 95%Line | 99%Line | Min | Max | Error% | TPS | KB/sec |
1 | 22805 | 547 | 366 | 512 | 636 | 5218 | 150 | 30003 | 0.26 | 65.3 | 96.5 |
2 | 33605 | 519 | 362 | 503 | 618 | 5200 | 150 | 30003 | 0.21 | 66.5 | 98.5 |
3 | 43505 | 536 | 365 | 508 | 621 | 5210 | 150 | 34899 | 0.26 | 65.6 | 97.1 |
4 | 48205 | 527 | 365 | 507 | 618 | 5206 | 150 | 34899 | 0.24 | 65.1 | 96.3 |
5 | 49005 | 535 | 364 | 507 | 616 | 5211 | 150 | 34899 | 0.27 | 63.9 | 94.5 |
6 | 49901 | 532 | 364 | 505 | 614 | 5207 | 150 | 34899 | 0.27 | 61.0 | 90.2 |
7 | 50000 | 531 | 363 | 504 | 613 | 5207 | 150 | 34899 | 0.27% | 60.9 | 90.1 |
6.1.2 每秒的响应分布图
6.1.3 响应时间分布图
6.1.4 请求失败与成功分布图
6.1.5 结果分析
总笔数 | Jmeter错误笔数 | 请求前置响应超长笔数 | 服务本地处理超长笔数和404 |
50000 | 135 | 120 | 15 |
- 在使用jmeter压测请求被F5转发到apache server代理上,由于交易处理过程中处理时间过长造成长时间无响应,代理返回502 Proxy Error错误。
- 其中请求前置响应超长笔数在向前置获取结果返回的耗时超过3分钟,其余耗时均低于5s,前置接收到的晚,初步判定网络堵塞
- 本地业务处理的错误原因为签名、验签、获取数据及请求时404等
6.2 jmeter集群压测(10进程-每个进行5线程)
启10个进程,每个进程启动5个线程,并发为50,项目日志开启info状态
6.2.1 聚合报告
Label | #Samples | Average | Median | 90%Line | 95%Line | 99%Line | Min | Max | Error% | TPS | KB/sec |
1 | 11010 | 555 | 348 | 495 | 605 | 5196 | 148 | 30003 | 0.26 | 68.7 | 101.5 |
2 | 28910 | 507 | 333 | 473 | 568 | 5178 | 55 | 30015 | 0.25 | 76.3 | 121.9 |
3 | 36310 | 501 | 332 | 475 | 575 | 5176 | 55 | 30031 | 0.24 | 77.1 | 114.0 |
4 | 46310 | 485 | 331 | 466 | 557 | 5172 | 55 | 30031 | 0.21 | 78.6 | 116.3 |
5 | 50000 | 478 | 326 | 460 | 551 | 5166 | 55 | 30031 | 0.21 | 72.1 | 106.7 |
6.2.2 每秒的响应分布图
6.2.3 响应时间分布图
6.2.4 请求失败与成功分布图
6.2.5 应用系统状态
6.2.6 结果分析
总笔数 | Jmeter错误笔数 | 请求前置响应超长笔数 | 服务本地处理超长笔数和404 |
50000 | 105 | 92 | 13 |
1 在使用jmeter压测请求被F5转发到apache server代理上,由于交易处理过程中处理时间过长造成长时间无响应,代理返回502 Proxy Error错误。
2 其中请求前置响应超长笔数在向前置获取结果返回的耗时超过3分钟,其余耗时均低于5s,前置接收到的晚,初步判定网络堵塞
3 本地业务处理的错误原因为签名、验签、获取数据及请求时404等
6.3 jmeter集群压测(10进程-每个进行10线程)
启10个进程,每个进程启动10个线程,并发为100,项目日志开启info状态
6.3.1 聚合报告
Label | #Samples | Average | Median | 90%Line | 95%Line | 99%Line | Min | Max | Error% | TPS | KB/sec |
1 | 50000 | 1219 | 896 | 1665 | 2692 | 5808 | 209 | 38306 | 0.30 | 68.0 | 100.5 |
6.3.2 每秒的响应分布图
6.3.3 响应时间分布图
6.3.4 请求失败与成功分布图
6.3.5 结果分析
总笔数 | Jmeter错误笔数 | 请求前置响应超长笔数 | 服务本地处理超长笔数和404 |
50000 | 150 | 119 | 31 |
1 在使用jmeter压测请求被F5转发到apache server代理上,由于交易处理过程中处理时间过长造成长时间无响应,代理返回502 Proxy Error错误。
2 其中请求前置响应超长笔数在向前置获取结果返回的耗时超过3分钟,其余耗时均低于5s,前置接收到的晚,初步判定网络堵塞
3 本地业务处理的错误原因为签名、验签、获取数据及请求时404等
6.4 jmeter集群压测(30进程-每个进行5线程)
启30个进程,每个进程启动5个线程,并发为150,项目日志开启info状态
6.4.1 聚合报告
Label | #Samples | Average | Median | 90%Line | 95%Line | 99%Line | Min | Max | Error% | TPS | KB/sec |
1 | 150000 | 1473 | 1924 | 1733 | 1959 | 6156 | 222 | 35107 | 0.21 | 89.5 | 132.2 |
6.4.2 每秒的响应分布图
6.4.3 响应时间分布图
6.4.4 应用系统状态
6.4.5 客户端系统状态
6.4.6 结果分析
暂未统计
6.5 jmeter集群压测(20进程-每个进行5线程)
启20个进程,每个进程启动5个线程,并发为100,项目日志开启info状态,超时时间2000ms
6.5.1 聚合报告
Label | #Samples | Average | Median | 90%Line | 95%Line | 99%Line | Min | Max | Error% | TPS | KB/sec |
1 | 200000 | 867 | 722 | 1073 | 1296 | 5674 | 1 | 10053 | 0.84 | 92.8 | 138.6 |
6.5.2 每秒的响应分布图
6.5.3 响应时间分布图
6.5.4 请求失败与成功分布图
6.5.5 结果分析
总笔数 | Jmeter错误笔数 | TPS |
100000 | 730 | 98.0 |
1 由于本地客户端限定2000毫秒不响应就认为失败,所以失败率偏高
七 结果汇总分析
Label | #Samples | Average | Median | 90%Line | 95%Line | 进程 | 线程 | 并发 | Error% | TPS | KB/sec |
50并发 | 50000 | 531 | 363 | 504 | 613 | 5 | 10 | 50 | 0.27% | 60.9 | 90.1 |
50并发 | 50000 | 478 | 326 | 460 | 551 | 10 | 5 | 50 | 0.21 | 72.1 | 106.7 |
100并发 | 50000 | 1219 | 896 | 1665 | 2692 | 10 | 10 | 100 | 0.30 | 68.0 | 100.5 |
150并发 | 150000 | 1473 | 1924 | 1733 | 1959 | 30 | 5 | 150 | 0.21 | 89.5 | 132.2 |
100并发 | 200000 | 867 | 722 | 1073 | 1296 | 20 | 5 | 100 | 0.84 | 92.8 | 138.6 |
使用jmeter压测时,如果使用1个进程开多个线程进行压测,一个进程很难快速处理多个线程,造成本地处理浪费大量时间用于调度,最终压力上不去。
当采用集群压测时,启用多个进程调度少量线程,解决本地耗时,TPS明显提升。
在启动10个进程50线程时效果最佳,符合交易每秒钟处理的交易笔数,当提升并发到100时,交易响应时间明显提升。
压测过程中出现的错误主要有:
1、 请求资源404错误
2、 请求前置网络堵塞,每次均为3分钟
3、 本地签名、验签、获取数据耗时过长
最终压测结果TPS:90-100时可保证响应时间不超过2s