压测应用服务对RabbitMQ消息的消费能力--实践脚本
最近运维跟我反馈我负责的应用服务线上监控到消费RabbitMQ消息队列过慢,目前只有20左右,监控平台会有消息积压的告警。
开发修改了一版应用服务的版本,提交给我做压测验证。
之前没有做过消息中间件的压测,网上找了一圈测试方法,并且和开发沟通,最终确认通过压测RabbitMQ event消息处理的接口来完成本次的压测验证。
压测脚本:
import pika
import multiprocessing as mp
import time def main(counter):
routing_key = "busi.mc.event.XXXX" # 被压测的应用服务的key,指定消息的消费者
credentials = pika.PlainCredentials('guest', 'guest')
parameters = pika.ConnectionParameters('XXX.XX.XXX.XX',
5672,
'/',
credentials) connection = pika.BlockingConnection(parameters) # 连接 RabbitMQ
channel = connection.channel() # 创建频道 for i in range(1, counter): # 循环生产信息,供消费者(被压测的应用服务)消费
channel.basic_publish(exchange='mc-direct-exchange', routing_key=routing_key,
body='{"clientId":"5e8J8aoi4F380gpDS4sdfd","eventType":1}',
properties=pika.BasicProperties(
content_type="text/plain",
delivery_mode=1))
time.sleep(0.1)
# if counter % 600 == 0:
# time.sleep(1) connection.close() # 关闭连接 def loop_test(counter):
for i in range(1, counter):
main()
if counter % 100 == 0:
time.sleep(1) # 单个频率 if __name__ == "__main__":
# Define an output queue
output = mp.Queue() # Setup a list of processes that we want to run
processes = [mp.Process(target=main, args=(100000,)) for x in range(20)] # 消息总条数 并发数 # Run processes
for p in processes:
p.start() # Exit the completed processes
for p in processes:
p.join() # Get process results from the output queue
# results = [output.get() for p in processes] # print(results)
脚本运行后,通过RabbitMQ的web管理后台,查看消费消息的TPS已经可以稳定在200左右,本次验证通过了~~

参考文章:https://www.cnblogs.com/zhaof/p/9774390.html
压测应用服务对RabbitMQ消息的消费能力--实践脚本的更多相关文章
- RabbitMQ消息的消费与持久化
作为消费者的客户端要消费Rabbitmq的消息,首先要建立与它某个队列的连接,具体连接时可指定队列的BindingKey和关系的exchange标识,Rabbitmq判断若已有队列通过BindingK ...
- 性能压测诡异的Requests/second 响应刺尖问题
最近一段时间都在忙着转java项目最后的冲刺,前期的coding翻代码.debug.fixbug都逐渐收尾,进入上线前的性能压测. 虽然不是大促前的性能压测要求,但是为了安全起见,需要摸个底心里有个数 ...
- JMeter分布式压测实战(2020年清明假期学习笔记)
一.常用压力测试工具对比 简介:目前用的常用测试工具对比 1.loadrunner 性能稳定,压测结果及颗粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多. 2.Apache ab(单接口 ...
- Python Locust对指定网站“一键压测”
[本文出自天外归云的博客园] 前篇 前篇:Python Locust性能测试框架实践 本篇 承上——归纳过程 在前篇的基础上,我们可以利用Locust性能测试框架编写python脚本对指定网站或者接口 ...
- 【免费培训】腾讯WeTest&TesterHome WorkShop | 一起学压测
2019年,中国移动软件市场仍呈现快速增长趋势,移动新生态孕育而生.而移动软件质量问题越发受到用户的关注,成为用户体验的关键因素.目前移动软件测试人才稀缺,而性能测试作为一项高门槛.高技术的测试能力, ...
- jmeter命令行压测
简介:使用非GUI模式,即命令行模式运行jmeter测试脚本能够大大缩减系统资源 1.配置jdk及添加环境变量 变量名:JAVA_HOME 变量值: C:\Program Files\Java\jdk ...
- wrk 及扩展支持 tcp 字节流协议压测
wrk 及扩展支持 tcp 字节流协议压测 高性能.方便使用的 HTTP(s) 的流量压测工具,结合了多个开源项目开发而成: redis 的 ae 事件框架 luajit openssl http-p ...
- 压测:celey backend为rabbitmq pk redis
使用celery的backend异步获取结果,本文使用rabbitmq 和 redis分别作为backend,代码对比如下 from celery import Celery, platforms i ...
- lesson5:利用jmeter来压测消息队列(activemq)
本文讲述了利用jmeter来压测消息队列,其中消息队列采用apache的activemq,jmeter本身是支持符合jms标准消息队列的压测,由于jmeter的官方sampler配置比较复杂,本文直接 ...
随机推荐
- Python 从入门到进阶之路(二)
之前的文章我们对 Python 语法有了一个简单的认识,接下来我们对 Python 中的 if while for 做一下介绍. 上图为 if 判断语句的流程,无论任何语言,都会涉及到判断问题,if ...
- 数据显示按规格向datatable中增加空白记录
/// <summary> /// 按前台分页样式为datatable增加空行 /// </summary> /// <param name="gridPage ...
- 操作系统篇之Linux命令操作和redis安装以及基本使用
电脑操作系统 : windows7,8,10,xp,win98 操作系统 : linux ax unix 以后开发项目是部署在服务器上,服务器一般采用linux. linux的优点:系统稳定,操作速度 ...
- Python Web(二)
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.Django-debug-toolbar django-debug-toolbar 是一组可配置的面板,可显示 ...
- OpenCV:图像的开运算与闭运算
导包: import numpy as np import cv2 import matplotlib.pyplot as plt def show(image): plt.imshow(image) ...
- iOS swift 带有attributeString的多行文本label
class AttributeStringGenerator { var attributeString: NSMutableAttributedString! var lineSpacing: CG ...
- 【一】Gradle 初识
1.Gradle和Maven的对比 gradle 使用groovy语言,可以进行逻辑判断,maven基于xml,无法进行逻辑判断. gradle 可以在一个项目中,根据需求,生成2个不同的jar, m ...
- 关于xshell连接limux界面按上下左右方向键出现ABCD的问题
这个问题有两种可能: 1.一种是由于当前用户使用的shell是/bin/sh的原因.在添加用户的时候没有添加用户的指定shell类型,因此默认为/bin/sh. 可以用如下命令查看当前用户的shell ...
- 80道最新java基础部分面试题(七)
自己整理的面试题,希望可以帮到大家,需要更多资料的可以私信我哦,大家一起学习进步! 70.TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还 ...
- mysql中group by 使用
问题描述 我现在需要查询表test,里面需要安装字段a 进行分组.分组之后还有按照b字段最大的.还要查询出字段c. 我先在使用的数据库是mysql8.0 解决 需注意: group by 分组的时候是 ...