首页 > 其他分享 >lavinmq & rabbitmq压测对比

lavinmq & rabbitmq压测对比

时间:2022-12-01 12:55:24浏览次数:59  
标签:src guest 压测 lavinmq rabbitmq cr

环境准备

  • docker-compose 文件
version: '3'
services:
  lavinmq:
    image: cloudamqp/lavinmq:1.0.0-beta.8
    volumes:
      - ./mq:/var/lib/lavinmq
    ports:
    - 5672:5672
    - 15672:15672
  mq:
    image: rabbitmq:3.9.26-management-alpine
    environment:
    - RABBITMQ_DEFAULT_USER=guest
    - RABBITMQ_DEFAULT_PASS=guest
    ports:
    - 5673:5672
    - 15673:15672
   

异常问题

  • 压测工具
    使用lavinmqperf ,使用lavinmq 官方提供的

对比效果

  • lavinmq

./lavinmqperf throughput --uri=amqp://guest:guest@localhost

 

 

  • rabbitmq

./lavinmqperf throughput --uri=amqp://guest:guest@mq

 

 

问题

  • 压测现象
    lavinmq 处理上与直接rabbitmq 似乎不一样,首先会有一个过度期,然后比较平稳,但是总的结果是比rabbitmq 好不少
  • 服务异常停止
 
madvise: Operation not supported (IO::Error)
  from /tmp/src/lavinmq/mfile.cr:179:5 in 'punch_hole'
  from /usr/share/crystal/src/array.cr:1361:5 in '->'
  from /usr/share/crystal/src/benchmark.cr:148:5 in 'gc_log'
  from /tmp/src/lavinmq/vhost.cr:799:9 in '->'
  from /usr/share/crystal/src/fiber.cr:146:11 in 'run'
  from ???

影响:会造成服务异常,应该是lavinmq 在处理异常服务停止,没有最好灾备,造成文件格式损坏,当时测试是基于docker for mac(应该是基于libc 的系统调用处理有问题),但是在实际linux docker 环境暂时没发现问题(似乎和系统内核有关系?)

  • 大量堆积文件问题
    目前在测试如果节点堆积了比较大的消息文件,会有服务起不来的风险(目前测试发现的),解决方法就是删除消息文件,同时在测试大量消息的稳定性时候,发现lavinmq
    并不是很稳定不如rabbitmq

说明

单节点lavinmq与默认配置的rabbitmq 进行压测结果从目前来看avinmq 的性能是不错的,但是稳定性似乎是有点风险,期待ga

参考资料

https://lavinmq.com/documentation/getting-started
https://github.com/cloudamqp/lavinmq/
https://github.com/cloudamqp/lavinmq/blob/main/src/lavinmq/mfile.cr#L197

标签:src,guest,压测,lavinmq,rabbitmq,cr
From: https://www.cnblogs.com/rongfengliang/p/16941092.html

相关文章

  • shell linux环境下内存压测
    目录shelllinux环境下内存压测脚本详情用法shelllinux环境下内存压测公司在测试prometheus检测node节点内存,但是不允许修改prometheus的阈值,只能用脚本模拟内存增加来......
  • RabbitMQ 3.7.18安装延时插件rabbitmq-delayed-message-exchange后启动报错
    环境:安装请参考:https://blog.csdn.net/qq_37487520/article/details/126079651https://www.cnblogs.com/myifb/articles/16638251.html启用插件时,不用写插件版本号:r......
  • 记录一次项目部署在阿里云的1万压测
    场景:与往常测试不同,这次项目部署在阿里云服务器上面,需要在外网对其进行高并发压测(10000并发),这时需要考虑一个在内网压测不用考虑的因素,就是带宽。因为带宽的瓶颈不仅影响项......
  • debian 安装 RabbitMQ
    首先安装Erlang环境apt-getinstallerlang检查安装是否成功erl搜索apt下是否有rabbitmq-serverapt-cachesearchrabbitmq-server 安装apt-getinstall......
  • springboot消息之使用RabbitTemplate给rabbitmq发送和接收消息&序列化机制
    1-引入spring-boot-starter-amqp2-application.yml配置3-测试RabbitMQ  1--AmqpAdmin:管理组件  2--RabbitTemplate:消息发送处理组件======================......
  • springboot消息之RabbitMQ简介
    RabbitMQ是一个有erlang开发的AMQP(AavancedMessageQueueProtocol)的开源实现核心概念:Publisher :消息的生产者,也是一个向交换器发布消息的客户端应用程序Mess......
  • rabbitmq的consumer_timeout修改
    问题:项目中使用了rabbitmq来做异步任务,最近突然发现一个耗时比较长的任务一直在重复执行。排查:排查日志后发现了超时,channel关闭。如果超过了consumer_timeout时间默认......
  • rabbitmq
    title:rabbitmqdate:2022-11-2919:02:37tags:使用pom<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp......
  • Rabbitmq #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue ‘
    #method<channel.close>(reply-code=404,reply-text=NOT_FOUND-noqueue‘myQueueDirect‘invhost‘/‘是因为消息发布者queueDeclare方法中传递的exclusive参数传......
  • lavinmq cloudamqp 开源的amqp server
    lavinmq是cloudamqp基于Crystal开发的amqp协议server,目前暂时不吃你集群,但是可以通过federation以及shovel暂时解决ha问题lavinmq包含的特性持久exchange较多语......