测试对象
本次测试对象为Java开发的用户行为采集系统,只要用户在客户端有相应的用户行为,就会触发数据采集系统收集并记录这些数据到数据库。
测试目的
1.验证现有集群环境,数据采集系统是否能够将tps提高到2000以上且稳定运行。
2.找出当前集群环境的性能瓶颈。
3.验证消息中间件RabbitMQ处理大量数据的效率。
部署架构
![](https://img.haomeiwen.com/i7562213/9e47cb89918f594a.png)
nginx集群环境部署在同一台服务器上,Jmeter部署在另外一台直连服务器上,各个应用中间件按照生产标准优化。
测试脚本
Jmeter脚本中包含用户行为采集的各个接口对应的http请求,不添加任何脚本策略。
![](https://img.haomeiwen.com/i7562213/a81b02f91a5e5acd.png)
测试结果
case1:500个线程,5秒启动,持续运行600秒
响应时间小于3S,错误率为0.0%,吞吐率为10963.5/sec
![](https://img.haomeiwen.com/i7562213/680f5976aa173b90.png)
CPU使用率74.5%,内存剩余25G
![](https://img.haomeiwen.com/i7562213/13c86a608c4703f4.png)
case2:1000个线程,5秒启动,持续运行600秒
1000个线程下,吞吐量明显下降,错误响应比例高达7%,服务器资源开始出现空闲,说明当前集群无法满足该性能压力
![](https://img.haomeiwen.com/i7562213/b7ddc7b72b478963.png)
![](https://img.haomeiwen.com/i7562213/e512cc398014f8a3.png)
case3:800线程,5秒启动,持续运行600秒
响应时间小于3S,错误率为4.65%,吞吐率为9479.2/sec
![](https://img.haomeiwen.com/i7562213/7b853a676e7b3de9.png)
CPU使用率75.9%,内存剩余23G
![](https://img.haomeiwen.com/i7562213/dca2db7c4dce85c7.png)
case4:Jmeter注入1400万条数据,观察并记录RabbitMQ效率
500个线程循环4000次(用时21分30秒)
![](https://img.haomeiwen.com/i7562213/26faacf0521ddbae.png)
Jmeter运行完毕后MQ排队情况
![](https://img.haomeiwen.com/i7562213/e8a774776e25e5e3.png)
mysql数据写入情况
![](https://img.haomeiwen.com/i7562213/fb401e4afa0d1ef6.png)
测试总结
1.通过case1可以看出,当前集群环境完全可以满足tps>2000的响应需求,并且在500个线程压力下tps可以稳定在10000左右稳定运行。
2.通过对case1、case2、case3的测试结果,当线程数为500的时候,系统稳定运行;当线程数为1000的时候,系统开始出现高达7%的错误响应且服务器资源空闲,tps较case1下降;当线程数为800的时候,响应的错误率下降为4.6%且服务器资源开销正常,tps较case2有所提升;推测当前集群环境能够承受的Jmeter线程数在500~800之间,最大tps在10000左右。
3.通过Jmeter向系统注入1400万条数据,系统总处理时间为1小时19分33秒,数据没有丢失情况。Jmeter在21分30秒时候就已经停止请求,此时RabbitMQ中缓存了大概1260万条消息,处理花费59分钟,系统在没有请求压力情况下平均每分钟处理21万条数据,在有Jmeter压力请求压力下平均每分钟处理6.5万条数据。
网友评论