(十二)性能测试-一次完整的压测

测试对象

本次测试对象为Java开发的用户行为采集系统,只要用户在客户端有相应的用户行为,就会触发数据采集系统收集并记录这些数据到数据库。

测试目的

1.验证现有集群环境,数据采集系统是否能够将tps提高到2000以上且稳定运行。
2.找出当前集群环境的性能瓶颈。
3.验证消息中间件RabbitMQ处理大量数据的效率。

部署架构
01.png

nginx集群环境部署在同一台服务器上,Jmeter部署在另外一台直连服务器上,各个应用中间件按照生产标准优化。

测试脚本

Jmeter脚本中包含用户行为采集的各个接口对应的http请求,不添加任何脚本策略。


02.png
测试结果
case1:500个线程,5秒启动,持续运行600秒

响应时间小于3S,错误率为0.0%,吞吐率为10963.5/sec


03.png

CPU使用率74.5%,内存剩余25G


04.png
case2:1000个线程,5秒启动,持续运行600秒

1000个线程下,吞吐量明显下降,错误响应比例高达7%,服务器资源开始出现空闲,说明当前集群无法满足该性能压力


05.png

06.png
case3:800线程,5秒启动,持续运行600秒

响应时间小于3S,错误率为4.65%,吞吐率为9479.2/sec


07.png

CPU使用率75.9%,内存剩余23G


08.png
case4:Jmeter注入1400万条数据,观察并记录RabbitMQ效率

500个线程循环4000次(用时21分30秒)


09.png

Jmeter运行完毕后MQ排队情况


10.png

mysql数据写入情况


11.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万条数据。

你可能感兴趣的:((十二)性能测试-一次完整的压测)