压测应用服务对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配置比较复杂,本文直接 ...
随机推荐
- FIRST 集与 FOLLOW 集
文法: S→ABc A→a|ε B→b|ε First 集合求法: 能 由非终结符号推出的所有的开头符号或可能的ε,但要求这个开头符号是终结符号.如此题 A 可以推导出 a 和ε,所以 FIRST(A ...
- 01-Nginx安装
一.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 二.首先安装PCRE PC ...
- 以太坊智能合约开发 Solidity学习
1. pragma solidity >=0.4.22 <0.6.0;//版本号,头文件 contract BooleanTest { bool _a;//默认返回false int nu ...
- Spring Boot 2 快速教程:WebFlux 快速入门(二)
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 02:WebFlux 快速入门实践 文章工程: JDK 1.8 ...
- Selenium(十八):unittest单元测试框架(四) HTML测试报告
1. HTML测试报告 对测试人员来而言,测试的产出很难衡量.换句话说,测试人员的价值比较难以量化和评估,相信这一点对软件测试人员来说深有体会.我们花费了很多时间与精力所做的自动化测试也是如此.所以, ...
- Selenium(五):CSS选择器(二)
1. CSS选择器 1.1 选择语法联合使用 CSS selector的另一个强大之处在于:选择语法可以联合使用. html代码: <div id='bottom'> <div cl ...
- JMeter压测“java.net.BindException: Address already in use: connect”解决方法
之前在windows机上用JMeter压测,50并发下出现大量接口报“java.net.BindException: Address already in use: connect”错误. 从字面的意 ...
- Spring Boot 2 使用自定义配置
在application.yml定义配置后,可以使用Environment来读取配置,也可以使用@Value注解让业务代码去读取配置.如果属性较多,可以定义属性映射对象. 开发环境:IntelliJ ...
- Android Recovery升级原理
摘要 Recovery模式指的是一种可以对安卓机内部的数据或系统进行修改的模式(类似于windows PE或DOS).也可以称之为安卓的恢复模式,在这个所谓的恢复模式下,我们可以刷入新的安卓系统,或者 ...
- CQRS(Command and Query Responsibility Segregation)与EventSources实例
CQRS The CQRS pattern and event sourcing are not mere simplistic solutions to the problems associate ...