lavinmq & rabbitmq压测对比
环境准备
- 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-12-01 gophercloud 不错的openstack golang sdk
2020-12-01 基于alpine docker镜像应用的参考Dockerfile配置
2020-12-01 cube.js 生产部署简单说明
2020-12-01 cube.js 官方docker镜像发布
2019-12-01 perf-tools 简单试用